【python】從web抓取信息
阿新 • • 發佈:2018-10-06
info 瀏覽器 sys.argv 小說 res 單擊 enter cat 下載失敗
- 能打開瀏覽器的模塊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 requestsfrom 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抓取信息