爬取frame内的多条链接

来源:互联网 发布:matlab 生成稀疏矩阵 编辑:程序博客网 时间:2024/05/17 23:23

Python爬网页功能强大是众所周知,一直想试试,却一直没有决心做。最近收到一个任务,爬取一些go的资料。
要爬的网址是Go语言标准库,首先分析下需要用到的知识:

  • 获取链接地址,即获取href属性;
  • 从网址上get到html页面,并保存到文件中;
  • 由于链接集在一个frame内,因此需要用到selenium的切换frame。

代码如下:

#_*_coding:utf8 _*_import requestsfrom bs4 import BeautifulSoupfrom selenium import webdriverif __name__ == "__main__":    browser_driver = webdriver.Chrome()    browser_driver.get("https://studygolang.com/pkgdoc")    links = []    titles = []    browser_driver.switch_to.frame(0)    for link in browser_driver.find_elements_by_tag_name('a'):        links.append(link.get_attribute('href'))        titles.append(link.text)    file_path = 'E:\est\go_artical{}.htm'    i = 0    for res in links:        result = requests.get(res)        result.raise_for_status()        for chunk in result.iter_content(100000):            playFile = open(file_path.format(i),'wb')            playFile.write(chunk)            i = i + 1            playFile.close()    browser_driver.quit()

还可以完善的一点是爬取出来之后的文件命名,本打算用text值命名,不过里面包含有‘/’,还要再进行拆分,所以就先这样吧。

切换frame相关知识补充,这篇介绍的是相当详细了,留作以后查阅。

原创粉丝点击