1. 程式人生 > >【python】從web抓取信息

【python】從web抓取信息

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 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抓取信息