如何在scrapy框架下,用python实现爬虫自动跳转页面来抓去网页内容?? 如何用Python爬虫抓取网页内容?

\u5982\u4f55\u5728scrapy\u6846\u67b6\u4e0b\uff0c\u7528python\u5b9e\u73b0\u722c\u866b\u81ea\u52a8\u8df3\u8f6c\u9875\u9762\u6765\u6293\u53bb\u7f51\u9875\u5185\u5bb9

\uff081\uff09\u4e00\u79cd\u662f\u50cf\u6211\u4e4b\u524d\u722c\u866b\u65b0\u4eac\u62a5\u7f51\u7684\u65b0\u95fb\uff0c\u4e0b\u4e00\u9875\u7684url\u53ef\u4ee5\u901a\u8fc7\u5ba1\u67e5\u5143\u7d20\u83b7\u5f97\uff0c\u7b2c\u4e00\u9875\u7684\u7f51\u5740\u662fhttp://www.bjnews.com.cn/news/list-43-page-1.html
\u5728\u7b2c\u4e00\u9875\u7684\u65f6\u5019\uff0c\u4e0b\u4e00\u9875\u6309\u94ae\u7684\u5ba1\u67e5\u5143\u7d20\u662f


\u6211\u4eec\u901a\u8fc7\u83b7\u53d6next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]
,\u4fbf\u53ef\u4ee5\u5f97\u5230\u4e0b\u4e00\u9875\u7684url,next_page = "http://www.bjnews.com.cn" + next_pages,

\u8fd9\u4e00\u90e8\u5206\u7684\u5b8c\u6574\u4ee3\u7801\u4e3a\uff1a

page_link=set() #\u4fdd\u5b58\u4e0b\u4e00\u9875\u9875\u9762url

content_link=set() #\u4fdd\u5b58\u9875\u9762\u5185\u6240\u6709\u53ef\u83b7\u5f97\u7684url

rules={'page':LinkExtractor(allow=(r'^http://www.bjnews.com.cn/\w+/2016/\d{2}/\d{2}/\d{6}.html
))}

start_urls={'http://www.bjnews.com.cn/news/list-43-page-1.html'}

def parse(self, response):

#\u722c\u53d6\u4e00\u4e2a\u9875\u9762\u5185\u7684\u6240\u6709url\u94fe\u63a5

    for link in self.rules['page'].extract_links(response):

        if link.url not in self.content_link:

            self.page_link.add(link.url)

            yield scrapy.Request(link.url, callback=self.parse_item)

#\u81ea\u52a8\u83b7\u53d6\u4e0b\u4e00\u9875\u7684url

    next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]

    if next_pages:

        next_page = "http://www.bjnews.com.cn" + next_pages

        self.page_link.add(next_page)

        yield scrapy.Request(next_page, callback=self.parse)


(2)\u7b2c\u4e8c\u79cd\u60c5\u51b5\uff0c\u5c31\u662f\u5728\u4e0b\u4e00\u9875\u7684\u5ba1\u67e5\u5143\u7d20\u4e2d\u6ca1\u6709\u63d0\u4f9burl\u94fe\u63a5\uff0c\u9700\u8981\u81ea\u5df1\u5206\u6790\uff0c\u5728\u8fd9\u91cc\u4f9d\u7136\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6bd4\u5982\u641c\u72d0\u65b0\u95fbhttp://news.sohu.com/guojixinwen.shtml\uff0c\u8be5\u9875\u4e2d\u4e0b\u4e00\u9875\u6309\u94ae\u7684\u5ba1\u67e5\u5143\u7d20\u662f\uff1a




\u6211\u4eec\u4e0d\u80fd\u901a\u8fc7href\u6765\u76f4\u63a5\u8fc7\u5f97\u4e0b\u4e00\u9875\u7684url,\u9700\u8981\u81ea\u5df1\u624b\u52a8\u83b7\u5f97\uff0c\u90a3\u73b0\u5728\u6211\u4eec\u6765\u5206\u6790

\u7b2c\u4e8c\u9875\u7684url:http://news.sohu.com/guojixinwen_5230.shtml,\u7b2c\u4e09\u9875\u7684http://news.sohu.com/guojixinwen_5229.shtml\uff0c\u6700\u540e\u4e00\u9875\u7684http://news.sohu.com/guojixinwen_5132.shtml\uff0c\u7531\u6b64\u53ef\u4ee5\u5206\u6790\u51fa\u8fd9\u4e00\u5171100\u9875\u7684url\uff0c\u662fhttp://news.sohu.com/guoneixinwen_"+i+".shtml",\u5176\u4e2di\u662f\u4ece5230\u52305132\u5012\u5e8f\u6392\u5217\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\u901a\u8fc7for\u5faa\u73af\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97\u8fd9100\u9875\u7684\u6240\u6709url,\u5b8c\u6574\u4ee3\u7801\u5982\u4e0b\uff1a\u5728\u8fd9\u91cc\u7ed9\u5927\u5bb6\u52a0\u4e00\u4e2a\u65b0\u7684\u65b9\u6cd5\u7684\u4f7f\u7528start_request,\u8be5\u65b9\u6cd5\u5c31\u662f\u5b50\u5b9a\u4e49start_urls\uff0c\u628a\u6240\u6709\u81ea\u5b9a\u4e49\u7684url\u653e\u5230page_link\u4e2d\uff0cself.make_requests_from_url\u65b9\u6cd5\u4f1a\u81ea\u52a8\u83b7\u53d6\u91cc\u9762\u7684\u8bf7\u6c42

\u722c\u866b\u6d41\u7a0b
\u5176\u5b9e\u628a\u7f51\u7edc\u722c\u866b\u62bd\u8c61\u5f00\u6765\u770b\uff0c\u5b83\u65e0\u5916\u4e4e\u5305\u542b\u5982\u4e0b\u51e0\u4e2a\u6b65\u9aa4
\u6a21\u62df\u8bf7\u6c42\u7f51\u9875\u3002\u6a21\u62df\u6d4f\u89c8\u5668\uff0c\u6253\u5f00\u76ee\u6807\u7f51\u7ad9\u3002
\u83b7\u53d6\u6570\u636e\u3002\u6253\u5f00\u7f51\u7ad9\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\u81ea\u52a8\u5316\u7684\u83b7\u53d6\u6211\u4eec\u6240\u9700\u8981\u7684\u7f51\u7ad9\u6570\u636e\u3002
\u4fdd\u5b58\u6570\u636e\u3002\u62ff\u5230\u6570\u636e\u4e4b\u540e\uff0c\u9700\u8981\u6301\u4e45\u5316\u5230\u672c\u5730\u6587\u4ef6\u6216\u8005\u6570\u636e\u5e93\u7b49\u5b58\u50a8\u8bbe\u5907\u4e2d\u3002
\u90a3\u4e48\u6211\u4eec\u8be5\u5982\u4f55\u4f7f\u7528 Python \u6765\u7f16\u5199\u81ea\u5df1\u7684\u722c\u866b\u7a0b\u5e8f\u5462\uff0c\u5728\u8fd9\u91cc\u6211\u8981\u91cd\u70b9\u4ecb\u7ecd\u4e00\u4e2a Python \u5e93\uff1aRequests\u3002
Requests \u4f7f\u7528
Requests \u5e93\u662f Python \u4e2d\u53d1\u8d77 HTTP \u8bf7\u6c42\u7684\u5e93\uff0c\u4f7f\u7528\u975e\u5e38\u65b9\u4fbf\u7b80\u5355\u3002
\u6a21\u62df\u53d1\u9001 HTTP \u8bf7\u6c42
\u53d1\u9001 GET \u8bf7\u6c42
\u5f53\u6211\u4eec\u7528\u6d4f\u89c8\u5668\u6253\u5f00\u8c46\u74e3\u9996\u9875\u65f6\uff0c\u5176\u5b9e\u53d1\u9001\u7684\u6700\u539f\u59cb\u7684\u8bf7\u6c42\u5c31\u662f GET \u8bf7\u6c42
import requests
res = requests.get('http://www.douban.com')
print(res)
print(type(res))
>>>

Scrapy是一个用Python写的Crawler Framework,简单轻巧,并且非常方便。Scrapy使用Twisted这个异步网络库来处理网络通信,架构清晰,并且包含了各种中间件接口,可以灵活地完成各种需求。Scrapy整体架构如下图所示:

根据架构图介绍一下Scrapy中的各大组件及其功能:

Scrapy引擎(Engine):负责控制数据流在系统的所有组建中流动,并在相应动作发生触发事件。
调度器(Scheduler):从引擎接收Request并将它们入队,以便之后引擎请求request时提供给引擎。
下载器(Downloader):负责获取页面数据并提供给引擎,而后提供给Spider。
Spider:Scrapy用户编写用于分析Response并提取Item(即获取到的Item)或额外跟进的URL的类。每个Spider负责处理一个特定(或一些网站)。
Item Pipeline:负责处理被Spider提取出来的Item。典型的处理有清理验证及持久化(例如存储到数据库中,这部分后面会介绍存储到MySQL中,其他的数据库类似)。
下载器中间件(Downloader middlewares):是在引擎即下载器之间的特定钩子(special hook),处理Downloader传递给引擎的Response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能(后面会介绍配置一些中间并激活,用以应对反爬虫)。
Spider中间件(Spider middlewares):是在引擎及Spider之间的特定钩子(special hook),处理Spider的输入(response)和输出(Items即Requests)。其提供了一个简便的机制,通过插入自定义的代码来扩展Scrapy功能。

爬虫跟踪下一页的方法是自己模拟点击下一页连接,然后发出新的请求。请看:

item1 = Item()
yield item1
item2 = Item()
yield item2
req = Request(url='下一页的链接', callback=self.parse)
yield req

注意使用yield时不要用return语句。



  • 濡備綍鍦╯crapy妗嗘灦涓,鐢╬ython瀹炵幇鐖櫕鑷姩璺宠浆椤甸潰鏉ユ姄鍘荤綉椤靛唴瀹筥鐧惧害...
    绛旓細涔熷氨鏄閫氳繃for寰幆锛屽氨鍙互鑾峰緱杩100椤电殑鎵鏈塽rl,瀹屾暣浠g爜濡備笅锛氬湪杩欓噷缁欏ぇ瀹跺姞涓涓柊鐨勬柟娉曠殑浣跨敤start_request,璇ユ柟娉曞氨鏄瓙瀹氫箟start_urls锛屾妸鎵鏈夎嚜瀹氫箟鐨剈rl鏀惧埌page_link涓紝self.make_requests_from_url鏂规硶浼氳嚜鍔ㄨ幏鍙栭噷闈㈢殑璇锋眰
  • 濡備綍鍦╯crapy妗嗘灦涓,鐢╬ython瀹炵幇鐖櫕鑷姩璺宠浆椤甸潰鏉ユ姄鍘荤綉椤靛唴瀹...
    绛旓細涓嬭浇鍣ㄤ腑闂翠欢锛圖ownloader middlewares锛夛細鏄湪寮曟搸鍗充笅杞藉櫒涔嬮棿鐨勭壒瀹氶挬瀛愶紙special hook锛夛紝澶勭悊Downloader浼犻掔粰寮曟搸鐨凴esponse銆傚叾鎻愪緵浜嗕竴涓畝渚跨殑鏈哄埗锛岄氳繃鎻掑叆鑷畾涔変唬鐮佹潵鎵╁睍Scrapy鍔熻兘锛堝悗闈細浠嬬粛閰嶇疆涓浜涗腑闂村苟婵娲锛岀敤浠ュ簲瀵瑰弽鐖櫕锛夈係pider涓棿浠讹紙Spider middlewares锛夛細鏄湪寮曟搸鍙奡pider涔嬮棿鐨勭壒...
  • 濡備綍鍦╯crapy妗嗘灦涓,鐢╬ython瀹炵幇鐖櫕鑷姩璺宠浆椤甸潰鏉ユ姄鍘荤綉椤靛唴瀹...
    绛旓細鐖櫕璺熻釜涓嬩竴椤电殑鏂规硶鏄嚜宸辨ā鎷熺偣鍑讳笅涓椤佃繛鎺ワ紝鐒跺悗鍙戝嚭鏂扮殑璇锋眰銆傝鐪嬶細item1 = Item()yield item1item2 = Item()yield item2req = Request(url='涓嬩竴椤电殑閾炬帴', callback=self.parse)yield req 娉ㄦ剰浣跨敤yield鏃朵笉瑕佺敤return璇彞銆
  • python 绯诲垪 03 - 鍩轰簬scrapy妗嗘灦鐨勭畝鍗曠埇铏
    绛旓細棣栧厛锛岀‘淇濆凡瀹夎Scrapy銆傛帴涓嬫潵锛屽垱寤轰竴涓柊鐨凷crapy椤圭洰锛屽苟鍦╯piders鐩綍涓嬪垱寤轰竴涓悕涓簆ic.py鐨勭埇铏枃浠躲傝鏂囦欢鍖呭惈涓涓熀纭鐨勭埇鍙栫ず渚嬶紝閫氳繃F12寮鍙戣呭伐鍏峰垎鏋愮綉椤电粨鏋勶紝鎵惧埌鐩爣鏁版嵁鑺傜偣锛堝鐢靛奖鍚嶇О鍜岀缉鐣ュ浘锛夈傚湪杩欎釜渚嬪瓙涓紝鎴戜滑鎶撳彇浜嗙儌鐣寗缃戠殑鐢靛奖淇℃伅锛屼絾璇风‘淇濆湪娴嬭瘯鏃堕伒瀹堢綉绔欒鍒欍傜埇铏繍琛...
  • 濡備綍鍦╯crapy妗嗘灦涓鐢╬ython鐖彇json鏂囦欢
    绛旓細sysimport scrapyimport urllib2import re,requests,jsonfrom scrapy.http import Requestreload(sys)sys.setdefaultencoding('utf8')class projectSpider(scrapy.Spider): name = "youproject" #allowed_domains = ["youproject.com"] start_urls = ( "http://p.3.cn/prices/mgets...
  • Scrapy鍜孯equests鐨刾ost璇锋眰璇﹁В
    绛旓細1銆scrapy妗嗘灦鍙戦乸ost璇锋眰鏈変袱绉嶆牸寮 2銆乺equests鍙戦乸ost璇锋眰锛屼紶閫掔殑鍙傛暟涔熷垎涓ょ鏍煎紡锛坉ata鍜宩son锛塻crapy.Request锛堬級璇锋眰涓巖equests.post()璇锋眰鐢ㄦ硶鐩稿悓锛屽緱鍒扮殑鏁版嵁涔熸槸鐩稿悓鐨 銆傞鍏堬紝鎴戜滑鍏堢湅涓婩ormRequest鐨勯儴鍒嗘簮鐮侊細闃呰婧愮爜鍙互寰楃煡: FormRequest锛氬彧鑳芥彁浜よ〃鍗曟暟鎹 FormRequest浼氬皢 formdata ...
  • Python搴撳涔(鍗佷笁):鐖櫕妗嗘灦Scrapy
    绛旓細濡傝缃甎ser-Agent绛夈傚湪瑙f瀽缃戦〉鍐呭鏃锛孲crapy鏀寔XPath鍜孋SS閫夋嫨鍣紝閫氳繃瀹氫箟鏁版嵁缁撴瀯濡俰tems.py涓殑绫伙紝灏嗘姄鍙栧埌鐨勬暟鎹粨鏋勫寲銆傚敖绠℃湰鏂囧彧灞曠ず浜Scrapy鐨鍩虹浣跨敤锛浣嗗畠鐨勫姛鑳借繙涓嶆浜庢銆傚浜庢洿娣卞叆鐨勯厤缃拰澶嶆潅椤圭洰锛屽己鐑堝缓璁煡闃呭畼鏂规枃妗d互鍙戞帢鏇村娼滃姏銆傚悗缁皢缁х画鎺㈣鏇村鍐呭...
  • Python缂栫▼鍩虹涔(浜)Scrapy鐖櫕妗嗘灦
    绛旓細瑙傚療涓涓媎emo.py鏂囦欢锛3.閰嶇疆浜х敓鐨剆pider鐖櫕锛屼篃灏辨槸demo.py鏂囦欢锛4.杩愯鐖櫕锛岀埇鍙栫綉椤碉細濡傛灉鐖彇鎴愬姛锛屼細鍙戠幇鍦╬ythonDemo涓嬪浜嗕竴涓猼20210816_551472.html鐨勬枃浠讹紝鎴戜滑鎵鐖彇鐨勭綉椤靛唴瀹归兘宸茬粡鍐欏叆璇ユ枃浠朵簡銆備互涓婂氨鏄Scrapy妗嗘灦鐨勭畝鍗浣跨敤浜嗐俁equest瀵硅薄琛ㄧず涓涓狧TTP璇锋眰锛岀敱Spider鐢熸垚锛岀敱Downloader...
  • pycharm+Python3.4鑳芥敮鎸scrapy妗嗘灦鍚
    绛旓細涓嶆敮鎸锛宻crapy鐜板湪鍙敮鎸佸埌鐗堟湰2
  • 缃戠粶鐖櫕缂栫▼鏍煎紡鏄粈涔
    绛旓細浣犲彲浠ヤ娇鐢˙eautifulSoup搴撲腑鐨刦ind_all鏂规硶鏉ユ煡鎵炬墍鏈夌殑p鏍囩锛屽苟灏嗗畠浠瓨鍌ㄥ湪涓涓垪琛ㄤ腑銆傚瓨鍌ㄦ暟鎹 鍦ㄧ埇鍙栧畬缃戦〉鏁版嵁鍚庯紝闇瑕佸皢鏁版嵁瀛樺偍鍒版湰鍦版垨鏁版嵁搴撲腑銆傚彲浠浣跨敤Scrapy妗嗘灦鎻愪緵鐨勭閬擄紙Pipeline锛夊姛鑳藉皢鏁版嵁瀛樺偍鍒版暟鎹簱涓紝鎴栬呬娇鐢ㄦ枃浠跺瓨鍌ㄧ瓑鏂瑰紡灏嗘暟鎹繚瀛樺埌鏈湴銆備緥濡傦細鍙互灏嗙綉椤电殑HTML瀛樺偍鍦ㄤ竴涓...
  • 扩展阅读:ca框架下载 ... xe防闪框架 ... 框架免费下载安装 ... 外挂框架免root软件 ... 冷颜框架8.0外挂 ... xposed官网免root版 ... 免root防闪框架下载 ... 白鹤防闪框架下载 ... 鬼头框架直装外挂5.0 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网