python从web抓取信息
Posted 韩俊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python从web抓取信息相关的知识,希望对你有一定的参考价值。
- 能打开浏览器的模块webbrowser,它的open函数可以做一些有意思的事情。例如从sys.argv或者剪切板读入地址,然后直接在Google地图打开相应的地图页面。
import webbrowser #python模块,非第三方模块,不需要下载,直接使用 import pyperclip #第三方模块 #启用电脑默认的浏览器打开网页 address = pyperclip.paste() webbrowser.open(\'http://www.google.cn/maps/place/\'+address)
这个模块平时使用的不多,只是在书上看到了才试了试。它的功能selenium模块(第三方模块)可以实现,而且selenium模块的功能更多。
- requests模块(第三方模块),很强大的一个模块,从Web直接下载文件(HTML,txt,zip等等)。
爬虫爬取网站时,会被部分网站阻止,因为不更改请求头的话,请求头会默认为Python...
请求头可设置为:
header = {\'User-Agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64)\' \' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\'}
简单的例子如下:
import requests from bs4 import BeautifulSoup #requests和bs4都为第三方模块 #请求头 header = {\'User-Agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64)\' \' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\'} #接受返回的HTML文件 res = requests.get(\'https://www.cnblogs.com/to-red/\',headers=header) #检查下载状态,下载失败时会停止 res.raise_for_status() #下载成功后会会保存在text变量中 #print(res.text) #BeautifulSoup解析HTML,返回一个BeautifulSoup对象 soup = BeautifulSoup(res.text,\'html.parser\') #select方法,p .class #id,返回的是Tag对象,有对应的HTML标签,也有attrs属性 title = soup.select(\'#Header1_HeaderTitle\')[0] print(title.text) blog = title.get(\'href\') print(blog)
requests模块+bs4模块就可以做很多事情了,比如追一本小说,每次运行一次程序,就会下载好最新的章节。
- selenium模块,控制Google浏览器需要安装chromedriver 点击下载,并将chromedriver.exe放在与Chrome浏览器的同一目录下。
如图:
selenium模块的常用操作:
from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Chrome(executable_path=\'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver\') browser.get(\'https://www.cnblogs.com/to-red/\') #find_element_*方法在页面寻找内容 pythonS = browser.find_element_by_id(\'CatList_LinkList_0_Link_0\') #单击 pythonS.click() #提交表单 search = browser.find_element_by_id(\'q\') search.send_keys(\'hello\') #发送一个回车键 search.send_keys(Keys.ENTER)
以上是关于python从web抓取信息的主要内容,如果未能解决你的问题,请参考以下文章