節(jié)約時(shí)間,不廢話介紹了,直接上例子?。?!輸入以下代碼(共6行)
import requests
from lxml import html
url='https://movie.douban.com/' #需要爬數(shù)據(jù)的網(wǎng)址
page=requests.Session().get(url)
tree=html.fromstring(page.text)
result=tree.xpath('//td[@class="title"]//a/text()') #獲取需要的數(shù)據(jù)
我們來(lái)看下獲取的數(shù)據(jù)
print(result)
['看不見(jiàn)的客人',
'斯隆女士',
'美女與野獸',
'契克',
'分裂',
'莎士比亞外傳',
'八月',
'休斯頓,我們有麻煩了!',
'古城一線牽',
'被操縱的城市']
爬蟲(chóng)結(jié)束~~~有木有滿滿成就感?。。?
以上代碼爬取的是這個(gè)頁(yè)面,紅色框框里面的數(shù)據(jù),也就是豆瓣電影本周口碑榜。
下面開(kāi)始簡(jiǎn)單介紹如何寫(xiě)爬蟲(chóng)。
爬蟲(chóng)前,我們首先簡(jiǎn)單明確兩點(diǎn):
1. 爬蟲(chóng)的網(wǎng)址;
2. 需要爬取的內(nèi)容(數(shù)據(jù))。
第一步,爬蟲(chóng)的網(wǎng)址,這個(gè)…那就豆瓣吧,我也不知道為啥爬蟲(chóng)教程都要拿豆瓣開(kāi)刀–!
第二部,需要爬取的內(nèi)容(數(shù)據(jù))。
這也正是上面6行代碼中的最后一行,也可能是新手覺(jué)得最難的地方了。代碼的這個(gè)部分就是獲取數(shù)據(jù)。
'//td[@class="title"]//a/text()'
下面來(lái)一步一步操作如何寫(xiě)出上面的那行代碼
1. 打開(kāi)網(wǎng)址https://movie.douban.com/,然后按一下F12。
2. 鼠標(biāo)點(diǎn)擊圖中的按鈕。
- 鼠標(biāo)點(diǎn)擊需要爬取的數(shù)據(jù),這里我們點(diǎn)“看不見(jiàn)的客人”,如圖所示。
- 看到大紅色框框里的東西,是不是和我們最“重要”的代碼有很多相似的地方。
再看來(lái)最后一行代碼中最“重要”的部分。
‘//td[@class=”title”]//a/text()’
- //td :這個(gè)相當(dāng)于指定是大目錄;
- [@class=”title”]:這個(gè)相當(dāng)于指定的小目錄;
- //a :這個(gè)相當(dāng)于最小的目錄;
- /text():這個(gè)是提取其中的數(shù)據(jù)。
爬蟲(chóng)介紹結(jié)束,看完你也該試試手了。
試試爬“即將上映”
這個(gè)只需將最后一行代碼改成
result=tree.xpath('//li[@class="title"]//a/text()')
如圖所示“即將上映”的電影就被你爬下來(lái)了。
是不是感覺(jué)爬蟲(chóng)很簡(jiǎn)單,已經(jīng)會(huì)了。
現(xiàn)實(shí)中,在爬蟲(chóng)乎面臨很多問(wèn)題,比如:
1. 頁(yè)面規(guī)則不統(tǒng)一;
2. 爬下來(lái)的數(shù)據(jù)處理;
3. 反爬蟲(chóng)機(jī)制。
還有很多類似的各種問(wèn)題,想要深入變成大神,還是需要一步一步來(lái),5分鐘變大神是不可能啦~~!
上面6行代碼包括的內(nèi)容有python requests包,html知識(shí),XPATH等。網(wǎng)上資料很多,這里就不做介紹了。
|