国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python高階爬蟲實戰(zhàn)分析

2020-02-15 22:17:56
字體:
供稿:網(wǎng)友

關(guān)于這篇文章有幾句話想說,首先給大家道歉,之前學(xué)的時候真的覺得下述的是比較厲害的東西,但是后來發(fā)現(xiàn)真的是基礎(chǔ)中的基礎(chǔ),內(nèi)容還不是很完全。再看一遍自己寫的這篇文章,突然有種想自殺的沖動。emmm所以樓主決定本文全文抹掉重寫一遍,并且為之前點進(jìn)來看的七十多訪問量的人,致以最誠摯的歉意。好想死。。

在學(xué)完了爬蟲全部內(nèi)容后,樓主覺得勉強有資格為接觸爬蟲的新人指指路了。那么廢話不多說,以下正文:

一、獲取內(nèi)容

說爬蟲一定要先說爬取內(nèi)容的方法,python有這么幾個支持爬蟲的庫,一個是urllib和它的后續(xù)版本庫,這個庫做爬取的時候生成的中繼對象是比較多的,樓主也記不大住都有什么,而且這個庫的使用在樓主看來有些過時了。更加建議做爬取的時候使用requests庫(ps:不是request)

使用urllib:

html = urllib.request.urlopen(url).read()

使用requests:

r = requests.get(url)

對于獲取到的內(nèi)容,有以下方法進(jìn)行處理:
1、使用正則表達(dá)式匹配。

2、使用BeautifulSoup對爬取內(nèi)容標(biāo)簽對象化。

3、通過構(gòu)造節(jié)點樹使用Xpath獲取元素。

第一種方法勝在直接,效率高而且不需要安裝三方庫。第二種方法勝在簡單,標(biāo)簽對象化后不需要寫復(fù)雜的正則表達(dá)式,而且提取標(biāo)簽更加方便。第三種方法勝在靈活,獲取內(nèi)容更加靈活,就是語法有點多,不熟的話可以對著Xpath語法文檔寫。

使用正則表達(dá)式匹配:

pattern_content = '<div class="rich_media_content " id="js_content">(.*?)</div>'content1 = re.findall(pattern_content, html, re.S)

使用BeautifulSoup對爬取內(nèi)容標(biāo)簽對象化:

soup = bs4.BeautifulSoup(html, 'lxml')imgs = soup.find_all('img')

關(guān)于BeautifulSoup的安裝請自行百度,沒記錯的話直接pip是可行的。

通過構(gòu)造節(jié)點樹使用Xpath獲取元素:

selector=etree.HTML(html)content=selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()')

至此,爬取的基本內(nèi)容就敘述完畢了,這里給出的是最簡單的范例,如果想深入了解某種方法,建議去查詢更詳細(xì)的技術(shù)文檔。

下面內(nèi)容就是之前的了,略作刪改。

二、偽造表單請求頭

很多網(wǎng)站上的數(shù)據(jù)爬取比較簡單,只需要直接request那個網(wǎng)址就可以,很多小型網(wǎng)站都是這樣。面對這樣的網(wǎng)站數(shù)據(jù),只需要花個幾分鐘隨便寫幾行代碼,就能爬到我們想要的數(shù)據(jù)。

但是想要爬取稍微大型一些的網(wǎng)站數(shù)據(jù),就不會這么容易了。這些網(wǎng)站的服務(wù)器,會分析收到的每一條request,來判斷該請求是否為用戶操作。這種技術(shù),我們把它稱為反爬技術(shù)。常見的反爬技術(shù),樓主知道的有上面所述的分析請求,還有驗證碼技術(shù)。對于這兩種情況,我們在構(gòu)造爬蟲程序的時候就需要稍微費點力氣了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扶风县| 沈阳市| 新平| 张家界市| 景东| 宿松县| 华池县| 策勒县| 博乐市| 宁德市| 玛纳斯县| 昭苏县| 漳平市| 天津市| 固阳县| 黄浦区| 堆龙德庆县| 普兰店市| 惠水县| 垦利县| 蕉岭县| 广水市| 丽江市| 嘉义市| 思南县| 安岳县| 环江| 中西区| 淅川县| 道孚县| 泽普县| 济源市| 科尔| 循化| 方城县| 永顺县| 托克托县| 布拖县| 大方县| 循化| 宿迁市|