久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

python爬蟲如何批量爬取糗事百科段子

瀏覽:145日期:2022-09-18 13:30:16

問題描述

剛學(xué)Python不會scrapy框架,就是想做個簡單爬蟲實(shí)現(xiàn)抓取前10頁段子(前N頁)。請問不用scrapy能有什么簡單一些的代碼能實(shí)現(xiàn)?之前有試過在page那里加for循環(huán),但是也只能抓到一個頁面,不知道怎么弄。

import urllibimport urllib2import repage = 1url = ’http://www.qiushibaike.com/8hr/page/’ + str(page)user_agent = ’Mozilla/5.0 ( Windows NT 6.1)’headers = { ’User-Agent’ : user_agent }try: request = urllib2.Request(url,headers = headers) response = urllib2.urlopen(request) content = response.read().decode(’utf-8’) pattern = re.compile(’<p.*?class='content'>.*?<span>(.*?)</span>.*?</p>.*?’,re.S) items = re.findall(pattern,content) for item in items:print itemexcept urllib2.URLError, e: if hasattr(e,'code'):print e.code if hasattr(e,'reason'):print e.reason

問題解答

回答1:

我跑了一下你的代碼,發(fā)現(xiàn)能跑出前2個頁面,后面都返回了一個錯誤碼,我覺得是因為你沒做防反爬處理,因為你這個結(jié)果在一秒內(nèi)就跑出來了,一秒內(nèi)連續(xù)10次訪問肯定不是人能做到的。

很多網(wǎng)站都能知道你這是用代碼在刷他們的網(wǎng)站,有些網(wǎng)站很討厭這個,會做反爬處理,可能直接把你的 IP 都給封了,讓你沒法訪問,因為如果不這樣做,短時間內(nèi)直接訪問太多次的話可能會把人家的網(wǎng)站都弄癱瘓了。

我的建議是每爬完一個頁面等待1秒,修改了下你的代碼:

import urllibimport urllib2import reimport timefor page in range(1, 11): print(’at page %s’ % page) url = ’http://www.qiushibaike.com/8hr/page/’ + str(page) user_agent = ’Mozilla/5.0 ( Windows NT 6.1)’ headers = { ’User-Agent’ : user_agent } try:request = urllib2.Request(url,headers = headers)response = urllib2.urlopen(request)content = response.read().decode(’utf-8’)pattern = re.compile(’<p.*?class='content'>.*?<span>(.*?)</span>.*?</p>.*?’,re.S)items = re.findall(pattern,content)for item in items: print item except urllib2.URLError, e:if hasattr(e,'code'): print e.codeif hasattr(e,'reason'): print e.reasontime.sleep(1)

我這邊是能出結(jié)果的,不過我想向你推薦另一個第三方的庫,叫 requests,既然你會 urllib,這也就不難,但是使用起來更人性化,配合 BeatuifulSoup 庫(用來解析和處理 HTML 文本的)很方便,你也可以去網(wǎng)上搜一下,了解一下。

還有就是以后做爬蟲一定要注意做防反爬處理!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 周宁县| 横峰县| 石狮市| 吉隆县| 清水河县| 宁波市| 武穴市| 自贡市| 米脂县| 温泉县| 洛川县| 沅陵县| 杨浦区| 包头市| 博客| 夏津县| 肃宁县| 乐平市| 中江县| 雅安市| 高邑县| 贵州省| 张家口市| 乐至县| 雷波县| 图木舒克市| 资源县| 万源市| 格尔木市| 东阳市| 北安市| 五常市| 禄劝| 临潭县| 贡觉县| 独山县| 湖州市| 轮台县| 祥云县| 都昌县| 泾源县|