1. 程式人生 > >requests和bs4的python爬蟲入門

requests和bs4的python爬蟲入門


現在就簡單的講下這幾個月的學習成果嘛~~~
爬蟲其實爬的都是原始碼,然後再通過對原始碼進行過濾,得出我們想要的東西~
有時會需要一些正則的東西~
比如一些文字啊,圖片的src啊,連結的href啊~~
這裡面有一些lazyload的圖片,就需要 selenium webdriver 什麼的了,這個還沒研究到哈,勿噴勿噴。

上面的答案也有提到過,用requests和bs4寫爬蟲真的是傻瓜爬蟲系列。
就是很容易了~~ 但是無論寫什麼程式,都得把文件讀一遍先,個人認為這倆個文件還是很友好的~
requests文件
快速上手 — Requests 2.10.0 文件
BeautifulSoup文件
Beautiful Soup 4.4.0 文件


首先引入這倆模組
from bs4 import BeautifulSoup
import requests

然後要給requests個url,告訴他我要爬取那個url的原始碼,假如就是這個問題的答案把
url = 'https://www.zhihu.com/question/20899988'
有時候還要偽裝個header一起傳給伺服器,
User-Agent 就是瀏覽器版本,cookie就是本地終端上的資料
這兩個開f12 的network 點doc 然後就應該能看得到了
headers = {
    'User-Agent':'',
    'Cookie':''
}
然後就可以用requests進行爬取了
data = requests.get(url, headers=headers)
其實這個data是個response 物件
需要.text一下再交給 bs4
soup = BeautifulSoup(data.text, 'lxml')

之後就能用soup.select 進行選擇了,
要是不會寫selector 最簡單的方法,開f12 右鍵 copy > copy selector
例如我們寫個簡單的獲取圖片的。
imgs = soup.select('div.zm-editable-content > img')

這個soup.select 返回的是一個list,所以你要for in 迴圈一下
比如把它的link都放在一個list裡
img_link = []
for i in imgs:
    img_link.append(i.get('data-actualsrc'))

那麼,我知道了這些link有什麼用啊~~下面我們就可以用urllib.urlretrieve來下載他們了啊!!
如果你爬被反爬的話,還可以 引入time 讓程式睡一會
import time
time.sleep(4)

原始碼就在這裡啦~~