从python基础到爬虫的书有什么值得推荐? 从python基础到爬虫的书有什么值得推荐

python\u722c\u866b\u6709\u54ea\u4e9b\u4e66

\u4ecePython\u57fa\u7840\u5230\u722c\u866b\u7684\u4e66\u7c4d\u6709\u5f88\u591a\u503c\u5f97\u63a8\u8350\u7684\uff0c\u4ee5\u4e0b\u662f\u51e0\u672c\u6bd4\u8f83\u53d7\u6b22\u8fce\u7684\u4e66\u7c4d\uff1a
1. \u300aPython\u7f16\u7a0b\u5feb\u901f\u4e0a\u624b-\u8ba9\u7e41\u7410\u5de5\u4f5c\u81ea\u52a8\u5316\u300b\uff1a\u8fd9\u672c\u4e66\u9002\u5408\u521d\u5b66\u8005\uff0c\u901a\u8fc7\u5b9e\u4f8b\u8bb2\u89e3Python\u7684\u57fa\u7840\u77e5\u8bc6\uff0c\u5e76\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528Python\u8fdb\u884c\u6570\u636e\u91c7\u96c6\u548c\u81ea\u52a8\u5316\u5904\u7406\u3002
2. \u300aPython\u7f51\u7edc\u6570\u636e\u91c7\u96c6\u300b\uff1a\u8fd9\u672c\u4e66\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u4f7f\u7528Python\u8fdb\u884c\u7f51\u7edc\u6570\u636e\u91c7\u96c6\u7684\u65b9\u6cd5\u548c\u6280\u5de7\uff0c\u5305\u62ec\u4f7f\u7528\u7b2c\u4e09\u65b9\u5e93\u8fdb\u884c\u7f51\u9875\u89e3\u6790\u3001\u6a21\u62df\u767b\u5f55\u3001\u722c\u53d6\u52a8\u6001\u7f51\u9875\u7b49\u5185\u5bb9\u3002
3. \u300aPython\u722c\u866b\u5f00\u53d1\u4e0e\u9879\u76ee\u5b9e\u6218\u300b\uff1a\u8fd9\u672c\u4e66\u4ece\u5b9e\u6218\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ecb\u7ecd\u4e86Python\u722c\u866b\u7684\u57fa\u672c\u539f\u7406\u548c\u5e38\u7528\u6280\u672f\uff0c\u540c\u65f6\u901a\u8fc7\u591a\u4e2a\u5b9e\u9645\u9879\u76ee\u7684\u6848\u4f8b\uff0c\u5e2e\u52a9\u8bfb\u8005\u638c\u63e1\u722c\u866b\u7684\u5b9e\u9645\u5e94\u7528\u3002
4. \u300aPython\u7f51\u7edc\u722c\u866b\u4ece\u5165\u95e8\u5230\u5b9e\u8df5\u300b\uff1a\u8fd9\u672c\u4e66\u4ece\u5165\u95e8\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u8be6\u7ec6\u4ecb\u7ecd\u4e86Python\u722c\u866b\u7684\u57fa\u672c\u539f\u7406\u548c\u5e38\u7528\u6280\u672f\uff0c\u901a\u8fc7\u5b9e\u4f8b\u8bb2\u89e3\u4e86\u5982\u4f55\u4f7f\u7528Python\u8fdb\u884c\u6570\u636e\u91c7\u96c6\u548c\u5206\u6790\u3002
5. \u300aPython\u722c\u866b\u5f00\u53d1\u4e0e\u9879\u76ee\u5b9e\u6218\u300b\uff1a\u8fd9\u672c\u4e66\u4ece\u5b9e\u6218\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ecb\u7ecd\u4e86Python\u722c\u866b\u7684\u57fa\u672c\u539f\u7406\u548c\u5e38\u7528\u6280\u672f\uff0c\u540c\u65f6\u901a\u8fc7\u591a\u4e2a\u5b9e\u9645\u9879\u76ee\u7684\u6848\u4f8b\uff0c\u5e2e\u52a9\u8bfb\u8005\u638c\u63e1\u722c\u866b\u7684\u5b9e\u9645\u5e94\u7528\u3002

\u516b\u722a\u9c7c\u91c7\u96c6\u5668\u662f\u4e00\u6b3e\u529f\u80fd\u5168\u9762\u3001\u64cd\u4f5c\u7b80\u5355\u3001\u9002\u7528\u8303\u56f4\u5e7f\u6cdb\u7684\u4e92\u8054\u7f51\u6570\u636e\u91c7\u96c6\u5668\uff0c\u53ef\u4ee5\u5e2e\u52a9\u60a8\u5feb\u901f\u83b7\u53d6\u6240\u9700\u7684\u6570\u636e\u3002\u4e86\u89e3\u66f4\u591a\u6570\u636e\u91c7\u96c6\u7684\u65b9\u6cd5\u548c\u6280\u5de7\uff0c\u53ef\u4ee5\u53c2\u8003\u516b\u722a\u9c7c\u91c7\u96c6\u5668\u7684\u6559\u7a0b\uff0c\u8bf7\u524d\u5f80\u5b98\u7f51\u6559\u7a0b\u4e0e\u5e2e\u52a9\u4e86\u89e3\u66f4\u591a\u8be6\u60c5\u3002

\u76ee\u6807
Scrapy\u7b80\u4ecb
Scrapy\u662f\u4e00\u4e2a\u4e3a\u4e86\u722c\u53d6\u7f51\u7ad9\u6570\u636e\uff0c\u63d0\u53d6\u7ed3\u6784\u6027\u6570\u636e\u800c\u7f16\u5199\u7684\u5e94\u7528\u6846\u67b6\u3002\u53ef\u4ee5\u5e94\u7528\u5728\u5305\u62ec\u6570\u636e\u6316\u6398\uff0c\u4fe1\u606f\u5904\u7406\u6216\u5b58\u50a8\u5386\u53f2\u6570\u636e\u7b49\u4e00\u7cfb\u5217\u7684\u7a0b\u5e8f\u4e2d\u3002
\u4f7f\u7528\u8fc7\u7a0b\u521b\u5efa\u4e00\u4e2aScrapy\u9879\u76ee\u5b9a\u4e49\u63d0\u53d6\u7684Item\u7f16\u5199\u722c\u53d6\u7f51\u7ad9\u7684 spider \u5e76\u63d0\u53d6 Item\u7f16\u5199Item Pipeline \u6765\u5b58\u50a8\u63d0\u53d6\u5230\u7684Item(\u5373\u6570\u636e)
\u63a5\u4e0b\u6765\u7684\u56fe\u8868\u5c55\u73b0\u4e86Scrapy\u7684\u67b6\u6784\uff0c\u5305\u62ec\u7ec4\u4ef6\u53ca\u5728\u7cfb\u7edf\u4e2d\u53d1\u751f\u7684\u6570\u636e\u6d41\u7684\u6982\u89c8(\u7eff\u8272\u7bad\u5934\u6240\u793a)\u3002\u4e0b\u9762\u5bf9\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u505a\u4e86\u7b80\u5355\u4ecb\u7ecd\uff0c\u5e76\u7ed9\u51fa\u4e86\u8be6\u7ec6\u5185\u5bb9\u7684\u94fe\u63a5\u3002\u6570\u636e\u6d41\u5982\u4e0b\u6240\u63cf\u8ff0
Paste_Image.png
\u7ec4\u4ef6
Scrapy Engine\u5f15\u64ce\u8d1f\u8d23\u63a7\u5236\u6570\u636e\u6d41\u5728\u7cfb\u7edf\u4e2d\u6240\u6709\u7ec4\u4ef6\u4e2d\u6d41\u52a8\uff0c\u5e76\u5728\u76f8\u5e94\u52a8\u4f5c\u53d1\u751f\u65f6\u89e6\u53d1\u4e8b\u4ef6\u3002\u8be6\u7ec6\u5185\u5bb9\u67e5\u770b\u4e0b\u9762\u7684\u6570\u636e\u6d41(Data Flow)\u90e8\u5206\u3002\u8c03\u5ea6\u5668(Scheduler)\u8c03\u5ea6\u5668\u4ece\u5f15\u64ce\u63a5\u53d7request\u5e76\u5c06\u4ed6\u4eec\u5165\u961f\uff0c\u4ee5\u4fbf\u4e4b\u540e\u5f15\u64ce\u8bf7\u6c42\u4ed6\u4eec\u65f6\u63d0\u4f9b\u7ed9\u5f15\u64ce\u3002\u4e0b\u8f7d\u5668(Downloader)\u4e0b\u8f7d\u5668\u8d1f\u8d23\u83b7\u53d6\u9875\u9762\u6570\u636e\u5e76\u63d0\u4f9b\u7ed9\u5f15\u64ce\uff0c\u800c\u540e\u63d0\u4f9b\u7ed9spider\u3002SpidersSpider\u662fScrapy\u7528\u6237\u7f16\u5199\u7528\u4e8e\u5206\u6790response\u5e76\u63d0\u53d6item(\u5373\u83b7\u53d6\u5230\u7684item)\u6216\u989d\u5916\u8ddf\u8fdb\u7684URL\u7684\u7c7b\u3002\u6bcf\u4e2aspider\u8d1f\u8d23\u5904\u7406\u4e00\u4e2a\u7279\u5b9a(\u6216\u4e00\u4e9b)\u7f51\u7ad9\u3002\u66f4\u591a\u5185\u5bb9\u8bf7\u770b Spiders \u3002Item PipelineItem Pipeline\u8d1f\u8d23\u5904\u7406\u88abspider\u63d0\u53d6\u51fa\u6765\u7684item\u3002\u5178\u578b\u7684\u5904\u7406\u6709\u6e05\u7406\u3001\u9a8c\u8bc1\u53ca\u6301\u4e45\u5316(\u4f8b\u5982\u5b58\u53d6\u5230\u6570\u636e\u5e93\u4e2d)\u3002\u66f4\u591a\u5185\u5bb9\u67e5\u770b Item Pipeline \u3002\u4e0b\u8f7d\u5668\u4e2d\u95f4\u4ef6(Downloader middlewares)\u4e0b\u8f7d\u5668\u4e2d\u95f4\u4ef6\u662f\u5728\u5f15\u64ce\u53ca\u4e0b\u8f7d\u5668\u4e4b\u95f4\u7684\u7279\u5b9a\u94a9\u5b50(specific hook)\uff0c\u5904\u7406Downloader\u4f20\u9012\u7ed9\u5f15\u64ce\u7684response\u3002\u5176\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7b80\u4fbf\u7684\u673a\u5236\uff0c\u901a\u8fc7\u63d2\u5165\u81ea\u5b9a\u4e49\u4ee3\u7801\u6765\u6269\u5c55Scrapy\u529f\u80fd\u3002\u66f4\u591a\u5185\u5bb9\u8bf7\u770b\u4e0b\u8f7d\u5668\u4e2d\u95f4\u4ef6(Downloader Middleware)\u3002Spider\u4e2d\u95f4\u4ef6(Spider middlewares)Spider\u4e2d\u95f4\u4ef6\u662f\u5728\u5f15\u64ce\u53caSpider\u4e4b\u95f4\u7684\u7279\u5b9a\u94a9\u5b50(specific hook)\uff0c\u5904\u7406spider\u7684\u8f93\u5165(response)\u548c\u8f93\u51fa(items\u53carequests)\u3002\u5176\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7b80\u4fbf\u7684\u673a\u5236\uff0c\u901a\u8fc7\u63d2\u5165\u81ea\u5b9a\u4e49\u4ee3\u7801\u6765\u6269\u5c55Scrapy\u529f\u80fd\u3002\u66f4\u591a\u5185\u5bb9\u8bf7\u770b Spider\u4e2d\u95f4\u4ef6(Middleware)\u3002
\u4e09\uff1a\u5b9e\u4f8b\u5206\u6790
1.\u4ece\u7f51\u7ad9\u7684\u4e3b\u9875\u8fdb\u5165\u6700\u65b0\u6597\u56fe\u8868\u60c5\u540e\u7f51\u5740\u662fhttp://www.doutula.com/photo/list/\uff0c\u70b9\u51fb\u7b2c\u4e8c\u9875\u540e\u770b\u5230\u7f51\u5740\u53d8\u6210\u4e86http://www.doutula.com/photo/list/?page=2\uff0c\u90a3\u6211\u4eec\u5c31\u77e5\u9053\u4e86\u7f51\u5740\u7684\u6784\u6210\u6700\u540e\u7684page\u5c31\u662f\u4e0d\u540c\u7684\u9875\u6570\u3002\u90a3\u4e48spider\u4e2d\u7684start_urls\u5f00\u59cb\u5165\u53e3\u5c31\u5982\u4e0b\u5b9a\u4e49\uff0c\u722c\u53d61\u523020\u9875\u7684\u56fe\u7247\u8868\u60c5\u3002\u60f3\u4e0b\u8f7d\u66f4\u591a\u8868\u60c5\u9875\u6570\u4f60\u53ef\u4ee5\u518d\u589e\u52a0\u3002start_urls =['http://www.doutula.com/photo/list/?page={}'.format(i) for i in range(1,20)]
2.\u8fdb\u5165\u5f00\u53d1\u8005\u6a21\u5f0f\u5206\u6790\u7f51\u9875\u7ed3\u6784\uff0c\u53ef\u4ee5\u770b\u5230\u5982\u4e0b\u7ed3\u6784\u3002\u53f3\u51fb\u590d\u5236\u4e00\u4e0bxpath\u5730\u5740\u5373\u53ef\u5f97\u5230\u5168\u90e8\u7684\u8868\u60c5\u6240\u5728\u7684a\u6807\u7b7e\u5185\u5bb9\u3002a[1]\u8868\u793a\u7b2c\u4e00\u4e2aa\uff0c\u53bb\u6389[1]\u5c31\u662f\u5168\u90e8\u7684a\u3002//*[@id="pic-detail"]/div/div[1]/div[2]/a
\u503c\u5f97\u6ce8\u610f\u7684\u662f\u8fd9\u91cc\u7684\u8868\u60c5\u6709\u4e24\u79cd\uff1a\u4e00\u4e2ajpg\uff0c\u4e00\u4e2agif\u52a8\u56fe\u3002\u5982\u679c\u83b7\u53d6\u56fe\u7247\u5730\u5740\u65f6\u53ea\u6293\u53d6a\u6807\u7b7e\u4e0b\u9762\u7b2c\u4e00\u4e2aimg\u7684src\u5c31\u4f1a\u51fa\u9519\uff0c\u6240\u4ee5\u6211\u4eec\u8981\u6293\u53d6img\u4e2d\u7684\u542b\u6709data-original\u7684\u503c\u3002\u8fd9\u91cca\u6807\u7b7e\u4e0b\u9762\u8fd8\u4e00\u4e2ap\u6807\u7b7e\u662f\u56fe\u7247\u7b80\u4ecb\uff0c\u6211\u4eec\u4e5f\u6293\u53d6\u4e0b\u6765\u4f5c\u4e3a\u56fe\u7247\u6587\u4ef6\u7684\u540d\u79f0\u3002\u56fe\u7247\u7684\u8fde\u63a5\u662f'http:'+ content.xpath('//img/@data-original')
\u56db\uff1a\u5b9e\u6218\u4ee3\u7801
\u5b8c\u6574\u4ee3\u7801\u5730\u5740 github.com/rieuse/learnPython
1.\u9996\u5148\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u8f93\u5165\u4ee3\u7801\u521b\u5efa\u4e00\u4e2a\u65b0\u7684Scrapy\u9879\u76ee\uff0c\u4e4b\u540e\u521b\u5efa\u4e00\u4e2a\u722c\u866b\u3002scrapy startproject ScrapyDoutucd ScrapyDoutu\\ScrapyDoutu\\spidersscrapy genspider doutula doutula.com
2.\u6253\u5f00Doutu\u6587\u4ef6\u5939\u4e2d\u7684items.py\uff0c\u6539\u4e3a\u4ee5\u4e0b\u4ee3\u7801\uff0c\u5b9a\u4e49\u6211\u4eec\u722c\u53d6\u7684\u9879\u76ee\u3002import scrapyclass DoutuItem(scrapy.Item):
3.\u6253\u5f00spiders\u6587\u4ef6\u5939\u4e2d\u7684doutula.py\uff0c\u6539\u4e3a\u4ee5\u4e0b\u4ee3\u7801\uff0c\u8fd9\u4e2a\u662f\u722c\u866b\u4e3b\u7a0b\u5e8f\u3002#-*- coding: utf-8-*-import os
3.\u8fd9\u91cc\u9762\u6709\u5f88\u591a\u503c\u5f97\u6ce8\u610f\u7684\u90e8\u5206\uff1a
\u56e0\u4e3a\u56fe\u7247\u7684\u5730\u5740\u662f\u653e\u5728sinaimg.cn\u4e2d\uff0c\u6240\u4ee5\u8981\u52a0\u5165allowed_domains\u7684\u5217\u8868\u4e2dcontent.xpath('//img/@data-original').extract()[i]\u4e2dextract()\u7528\u6765\u8fd4\u56de\u4e00\u4e2alist(\u5c31\u662f\u7cfb\u7edf\u81ea\u5e26\u7684\u90a3\u4e2a)\u91cc\u9762\u662f\u4e00\u4e9b\u4f60\u63d0\u53d6\u7684\u5185\u5bb9\uff0c[i]\u662f\u7ed3\u5408\u524d\u9762\u7684i\u7684\u5faa\u73af\u6bcf\u6b21\u83b7\u53d6\u4e0b\u4e00\u4e2a\u6807\u7b7e\u5185\u5bb9\uff0c\u5982\u679c\u4e0d\u8fd9\u6837\u8bbe\u7f6e\uff0c\u5c31\u4f1a\u628a\u5168\u90e8\u7684\u6807\u7b7e\u5185\u5bb9\u653e\u5165\u4e00\u4e2a\u5b57\u5178\u7684\u503c\u4e2d\u3002filename ='doutu\\{}'.format(item['name'])+ item['img_url'][-4:]\u662f\u7528\u6765\u83b7\u53d6\u56fe\u7247\u7684\u540d\u79f0\uff0c\u6700\u540eitem['img_url'][-4:]\u662f\u83b7\u53d6\u56fe\u7247\u5730\u5740\u7684\u6700\u540e\u56db\u4f4d\u8fd9\u6837\u5c31\u53ef\u4ee5\u4fdd\u8bc1\u4e0d\u540c\u7684\u6587\u4ef6\u683c\u5f0f\u4f7f\u7528\u5404\u81ea\u7684\u540e\u7f00\u3002\u6700\u540e\u4e00\u70b9\u5c31\u662f\u5982\u679cxpath\u6ca1\u6709\u6b63\u786e\u5339\u914d\uff0c\u5219\u4f1a\u51fa\u73b0(referer: None)
4.\u914d\u7f6esettings.py\uff0c\u5982\u679c\u60f3\u6293\u53d6\u5feb\u4e00\u70b9CONCURRENT_REQUESTS\u8bbe\u7f6e\u5927\u4e00\u4e9b\uff0cDOWNLOAD_DELAY\u8bbe\u7f6e\u5c0f\u4e00\u4e9b\uff0c\u6216\u8005\u4e3a0.#-*- coding: utf-8-*-BOT_NAME ='ScrapyDoutu'SPIDER_MODULES =['ScrapyDoutu.spiders']NEWSPIDER_MODULE ='ScrapyDoutu.spiders'DOWNLOADER_MIDDLEWARES ={
5.\u914d\u7f6emiddleware.py\u914d\u5408settings\u4e2d\u7684UA\u8bbe\u7f6e\u53ef\u4ee5\u5728\u4e0b\u8f7d\u4e2d\u968f\u673a\u9009\u62e9UA\u6709\u4e00\u5b9a\u7684\u53cdban\u6548\u679c\uff0c\u5728\u539f\u6709\u4ee3\u7801\u57fa\u7840\u4e0a\u52a0\u5165\u4e0b\u9762\u4ee3\u7801\u3002\u8fd9\u91cc\u7684user_agent_list\u53ef\u4ee5\u52a0\u5165\u66f4\u591a\u3002import randomfrom scrapy.downloadermiddlewares.useragent import UserAgentMiddlewareclass RotateUserAgentMiddleware(UserAgentMiddleware):
6.\u5230\u73b0\u5728\u4e3a\u6b62\uff0c\u4ee3\u7801\u90fd\u5df2\u7ecf\u5b8c\u6210\u4e86\u3002\u90a3\u4e48\u5f00\u59cb\u6267\u884c\u5427\uff01
scrapy crawl doutu
\u4e4b\u540e\u53ef\u4ee5\u770b\u5230\u4e00\u8fb9\u4e0b\u8f7d\uff0c\u4e00\u8fb9\u4fee\u6539User Agent\u3002
\u4e94\uff1a\u603b\u7ed3
\u5b66\u4e60\u4f7f\u7528Scrapy\u9047\u5230\u5f88\u591a\u5751\uff0c\u4f46\u662f\u5f3a\u5927\u7684\u641c\u7d22\u7cfb\u7edf\u4e0d\u4f1a\u8ba9\u6211\u611f\u89c9\u5b64\u5355\u3002\u6240\u4ee5\u611f\u89c9Scrapy\u8fd8\u662f\u5f88\u5f3a\u5927\u7684\u4e5f\u5f88\u610f\u601d\uff0c\u540e\u9762\u7ee7\u7eed\u5b66\u4e60Scrapy\u7684\u5176\u4ed6\u65b9\u9762\u5185\u5bb9\u3002
github\u5730\u5740\u52a0\u7fa4
\u5b66\u4e60\u8fc7\u7a0b\u4e2d\u9047\u5230\u4ec0\u4e48\u95ee\u9898\u6216\u8005\u60f3\u83b7\u53d6\u5b66\u4e60\u8d44\u6e90\u7684\u8bdd\uff0c\u6b22\u8fce\u52a0\u5165\u5b66\u4e60\u4ea4\u6d41\u7fa4
\uff0c\u6211\u4eec\u4e00\u8d77\u5b66Python\uff01

目标

Scrapy简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

使用过程创建一个Scrapy项目定义提取的Item编写爬取网站的 spider 并提取 Item编写Item Pipeline 来存储提取到的Item(即数据)

接下来的图表展现了Scrapy的架构,包括组件及在系统中发生的数据流的概览(绿色箭头所示)。下面对每个组件都做了简单介绍,并给出了详细内容的链接。数据流如下所描述

Paste_Image.png

组件

Scrapy Engine引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。详细内容查看下面的数据流(Data Flow)部分。调度器(Scheduler)调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。下载器(Downloader)下载器负责获取页面数据并提供给引擎,而后提供给spider。SpidersSpider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。每个spider负责处理一个特定(或一些)网站。更多内容请看 Spiders 。Item PipelineItem Pipeline负责处理被spider提取出来的item。典型的处理有清理、验证及持久化(例如存取到数据库中)。更多内容查看 Item Pipeline 。下载器中间件(Downloader middlewares)下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看下载器中间件(Downloader Middleware)。Spider中间件(Spider middlewares)Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 Spider中间件(Middleware)。

三:实例分析

1.从网站的主页进入最新斗图表情后网址是http://www.doutula.com/photo/list/,点击第二页后看到网址变成了http://www.doutula.com/photo/list/?page=2,那我们就知道了网址的构成最后的page就是不同的页数。那么spider中的start_urls开始入口就如下定义,爬取1到20页的图片表情。想下载更多表情页数你可以再增加。start_urls =['http://www.doutula.com/photo/list/?page={}'.format(i) for i in range(1,20)]

2.进入开发者模式分析网页结构,可以看到如下结构。右击复制一下xpath地址即可得到全部的表情所在的a标签内容。a[1]表示第一个a,去掉[1]就是全部的a。//*[@id="pic-detail"]/div/div[1]/div[2]/a

值得注意的是这里的表情有两种:一个jpg,一个gif动图。如果获取图片地址时只抓取a标签下面第一个img的src就会出错,所以我们要抓取img中的含有data-original的值。这里a标签下面还一个p标签是图片简介,我们也抓取下来作为图片文件的名称。图片的连接是'http:'+ content.xpath('//img/@data-original')

四:实战代码

完整代码地址 github.com/rieuse/learnPython

1.首先使用命令行工具输入代码创建一个新的Scrapy项目,之后创建一个爬虫。scrapy startproject ScrapyDoutucd ScrapyDoutu\\ScrapyDoutu\\spidersscrapy genspider doutula doutula.com

2.打开Doutu文件夹中的items.py,改为以下代码,定义我们爬取的项目。import scrapyclass DoutuItem(scrapy.Item):

3.打开spiders文件夹中的doutula.py,改为以下代码,这个是爬虫主程序。#-*- coding: utf-8-*-import os

3.这里面有很多值得注意的部分:

因为图片的地址是放在sinaimg.cn中,所以要加入allowed_domains的列表中content.xpath('//img/@data-original').extract()[i]中extract()用来返回一个list(就是系统自带的那个)里面是一些你提取的内容,[i]是结合前面的i的循环每次获取下一个标签内容,如果不这样设置,就会把全部的标签内容放入一个字典的值中。filename ='doutu\\{}'.format(item['name'])+ item['img_url'][-4:]是用来获取图片的名称,最后item['img_url'][-4:]是获取图片地址的最后四位这样就可以保证不同的文件格式使用各自的后缀。最后一点就是如果xpath没有正确匹配,则会出现(referer: None)

4.配置settings.py,如果想抓取快一点CONCURRENT_REQUESTS设置大一些,DOWNLOAD_DELAY设置小一些,或者为0.#-*- coding: utf-8-*-BOT_NAME ='ScrapyDoutu'SPIDER_MODULES =['ScrapyDoutu.spiders']NEWSPIDER_MODULE ='ScrapyDoutu.spiders'DOWNLOADER_MIDDLEWARES ={

5.配置middleware.py配合settings中的UA设置可以在下载中随机选择UA有一定的反ban效果,在原有代码基础上加入下面代码。这里的user_agent_list可以加入更多。import randomfrom scrapy.downloadermiddlewares.useragent import UserAgentMiddlewareclass RotateUserAgentMiddleware(UserAgentMiddleware):

6.到现在为止,代码都已经完成了。那么开始执行吧!

scrapy crawl doutu

之后可以看到一边下载,一边修改User Agent。

五:总结

学习使用Scrapy遇到很多坑,但是强大的搜索系统不会让我感觉孤单。所以感觉Scrapy还是很强大的也很意思,后面继续学习Scrapy的其他方面内容。

github地址加群

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

,我们一起学Python!



点击头像查看历史

边爬边学,边学边爬(新手慢慢来,可以私聊我)

1.首先获取目标页面

2.这里以豆瓣为例,来获取页面中的所有书籍的名称

(仅供学习交流)

http://www.douban.com/tag/小说/?focus=book

获取首页代码

分享

获取结果,通过分析页面源代码(建议用firefox浏览器,按F12,可看到源代码)

然后解析(用BeautifulSoup)

a).缩小范围,我们通过id="book"获取所有的书。b).然后通过class="title"~遍历所有的书名。

对代码说明a).book_div通过id=book获取div标签b).book_a通过class="title"获取所有的booka标签c).for循环遍历book_a所有的a标签d).book.string输出a标签中的内容

结果

3.存储获取的数据

写入数据库,这里就以Mysql为例(下载安装MySQLdb模块这里不做叙述),就写怎么去执行一条sql语句

a).上面是执行sql语句的基本流程,当然针对不同的sql语句,会进行不同的处理。b).我们在创建数据库的时候一定要注意编码问题,个人建议使用utf8

4.爬虫完成,之后介绍IP和爬虫策略

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

,我们一起学Python!

每天晚上都有大神与你高清视频免费分享交流行业最新动态凑热闹就不要加了群名额有限!



前两篇爬虫12(点击头像看历史)

资料仅供学习

方式一

直接爬取网站

http://chanyouji.com/(网站会拦截IP,第二篇就用到了)

1~打开网页,里面有很多人分享的游记,我们就进行游记爬取2~点开其中一篇游记,看到链接地址形式http://chanyouji.com/trips/,这个时候,思考,这个数字代表的含义?会不会是游记在数据库的ID,如果是的话那我们换个数字会不会得到别的游记,试一下访问http://chanyouji.com/trips/,确实看到了不一样的游记。自己试试

c).结论,我们可以来请求到不同的数据。然而,这并不一定是可以按照上两节的方式来爬取。原因有很多。比如,有些数据是通过js渲染的。对于有web开发基础的很好理解,但是对于没有做过web开发的同学解释一下。我们假设要买一个房子,房子种类很多,分成两类,一类是没有装修的,另一类是装修好的。对于前者,我们要买家具装修布置,对于装修好的我们可以直接入住生活。带入例子http://chanyouji.com/trips/*****这个请求就买一个房子,没装修就是说返回的是这个网站的外壳,需要另外在JS里面重新请求数据,放到外壳里面。装修好的数据什么的直接给你。d).判断两类的结果:很简单。以火狐浏览器为例,F12打开调试窗口,找到网络->点击请求得到:

数据显示在里面后点开响应,会看到请求来的源代码(用爬虫发请求的结果)如下

e).假如是js渲染的,我没在这个网站上找到用js渲染的换个目标来解释。

方式二

目标网址:http://music.163.com/#/user/home?id=48353(一个网页)方法同上

a).这个http://music.163.com/user/home?id=48353缺少了歌单

b).我们寻找那个歌单的数据

发现http://music.163.com/weapi/user/playlist?csrf_token=这个就是返回的歌单,我们只需要请求这个接口的时候,带上该有的参数,就能得到这个数据。

方式三

(新)进行利用目标网址的APP,仍以蝉游记进行

APP的接口返回值一般都是JSON(比较好解析除了网易云音乐)核心:拦截APP请求。

a).我在电脑上安装安卓模拟器(用的是bluestacks不太好安装的)b).在里面安装APP蝉游记(还可以用电脑开个热点,用手机连接这个热点也能拦截)c).安装httpanalyzer其他的也行,打开httpanalyzerd).使用目标APP拦截到请求如下

e).请求时注意http和http的区别。遇到http的请求,试下用http替换。(有的比较麻烦不行)

f).把数据转化成标准的json数据,用这个工具http://www.bejson.com/jsonviewernew/

把数据复制过去格式化一下

游记代码

结果

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

,我们一起学Python!

每天晚上都有大神与你高清视频免费分享交流行业最新动态凑热闹就不要加了群名额有限!



  • Python 鐖櫕鐨勫叆闂鏁欑▼鏈夊摢浜涘煎緱鎺ㄨ崘鐨?
    绛旓細2.銆奝ython鐖櫕鎶鏈疄鎴樸嬶細杩欐湰涔︿粙缁嶄簡Python鐖櫕鐨勫熀鏈師鐞锛屼互鍙婂浣曚娇鐢≒ython缂栧啓鐖櫕绋嬪簭锛屽疄鐜扮綉缁滅埇铏殑鍔熻兘銆3.銆奝ython鐖櫕鏁版嵁鍒嗘瀽銆嬶細杩欐湰涔︿粙缁嶄簡濡備綍鍒嗘瀽鐖彇鍒扮殑鏁版嵁锛屼互鍙婂浣曚娇鐢≒ython缂栧啓鐖櫕绋嬪簭锛屽疄鐜扮綉缁滅埇铏殑鍔熻兘銆4.銆奝ython鐖櫕瀹炴垬锛氭繁鍏ョ悊瑙eb鎶撳彇銆嬶細杩欐湰涔︿粙缁嶄簡濡備綍浣跨敤Python...
  • 鏈夊摢浜涢傚悎鐖櫕瀛︿範鐨勪功绫?
    绛旓細1.銆奝ython缃戠粶鏁版嵁閲囬泦銆嬶細杩欐湰涔︽槸涓鏈潪甯搁傚悎鍒濆鑰呯殑鐖櫕鍏ラ棬涔︾睄锛屽畠璇︾粏浠嬬粛浜嗗浣曚娇鐢≒ython杩涜缃戠粶鏁版嵁閲囬泦锛屽寘鎷埇铏殑鍩烘湰姒傚康銆佸父鐢ㄥ簱鐨勪娇鐢ㄤ互鍙婂疄闄呮渚嬬殑璁茶В銆2.銆婄敤Python鍐欑綉缁滅埇铏嬶細杩欐湰涔︾敱钁楀悕鐖櫕涓撳闊︿笘涓滄挵鍐欙紝鍐呭娑电洊浜嗙埇铏殑鍩虹鐭ヨ瘑銆佸父鐢ㄥ伐鍏峰拰鎶鏈紝浠ュ強瀹為檯椤圭洰鐨勬渚嬪垎鏋愩...
  • 浠巔ython鍩虹鍒扮埇铏殑涔︽湁浠涔堝煎緱鎺ㄨ崘?
    绛旓細浠嶱ython鍩虹鍒扮埇铏殑涔︾睄鏈夊緢澶氬煎緱鎺ㄨ崘鐨勶紝浠ヤ笅鏄嚑鏈瘮杈冨彈娆㈣繋鐨勪功绫嶏細1. 銆奝ython缂栫▼蹇熶笂鎵-璁╃箒鐞愬伐浣滆嚜鍔ㄥ寲銆嬶細杩欐湰涔﹂傚悎鍒濆鑰锛岄氳繃瀹炰緥璁茶ВPython鐨勫熀纭鐭ヨ瘑锛屽苟浠嬬粛浜嗗浣曚娇鐢≒ython杩涜鏁版嵁閲囬泦鍜岃嚜鍔ㄥ寲澶勭悊銆2. 銆奝ython缃戠粶鏁版嵁閲囬泦銆嬶細杩欐湰涔﹁缁嗕粙缁嶄簡浣跨敤Python杩涜缃戠粶鏁版嵁閲囬泦鐨勬柟娉曞拰...
  • 鑷鐖櫕搴旇闃呰鍝簺鐩稿叧涔︾睄?
    绛旓細1.銆奝ython缃戠粶鏁版嵁閲囬泦銆嬶細杩欐湰涔﹁缁嗕粙缁嶄簡浣跨敤Python杩涜缃戠粶鏁版嵁閲囬泦鐨勬柟娉曞拰鎶宸锛屽寘鎷埇铏殑鍩烘湰鍘熺悊銆佹暟鎹姄鍙栥佹暟鎹竻娲楀拰瀛樺偍绛夋柟闈㈢殑鍐呭銆2.銆婄敤Python鍐欑綉缁滅埇铏嬶細杩欐湰涔﹂傚悎鍒濆鑰咃紝閫氳繃瀹炰緥璁茶В浜嗗浣曚娇鐢≒ython缂栧啓绠鍗曠殑鐖櫕绋嬪簭锛屽寘鎷綉椤佃В鏋愩佹暟鎹彁鍙栧拰瀛樺偍绛夊唴瀹广3.銆奡crapy瀹炴垬銆锛氳繖...
  • 瀛︿範python鐖櫕鎺ㄨ崘涔︾睄
    绛旓細閫傝缇や綋锛氫簡瑙ython鍩虹锛屽鏁版嵁鍙鍖栨劅鍏磋叮鐨勮鑰呫7銆佺埇铏嚦瀹濄奝ython 3缃戠粶鐖櫕寮鍙戝疄鎴樸嬭眴鐡h瘎鍒锛9.0鍒 鎺ㄨ崘鎸囨暟锛氣槄鈽呪槄 鎺ㄨ崘鐞嗙敱锛氫綔鑰呬笓涓氭按骞虫瀬楂橈紝浠庡師鐞嗗埌寮鍙戝疄鎴橈紝鍐呭璇﹀敖涓旀秹鍙婇潰骞匡紝閫氳繃澶氫釜妗堜緥浠嬬粛浜嗕笉鍚屽満鏅笅濡備綍瀹炵幇鏁版嵁鐖彇锛岄氱瘒骞茶揣锛屾棤涓鐐规按鍒嗐傞傝缇や綋锛氶傚悎鏈変竴瀹歅ython...
  • 鍒濆python鐖櫕鐪嬩粈涔堜功
    绛旓細鎺ㄨ崘锛歱ython鏁欑▼ 銆娾滅鍔炴硶鈥濆Python锛堢3鐗堬級銆嬫槸涓鏈Python鍏ラ棬涔︾睄锛岄傚悎瀵硅绠楁満浜嗚В涓嶅锛屾病鏈夊杩囩紪绋嬶紝浣嗗缂栫▼鎰熷叴瓒g殑鍒濆鑰呬娇鐢ㄣ傝繖鏈功缁撴瀯闈炲父绠鍗曪紝鍏朵腑瑕嗙洊浜嗚緭鍏/杈撳嚭銆佸彉閲忓拰鍑芥暟涓変釜涓婚锛屼互鍙婁竴浜涙瘮杈冮珮绾х殑璇濋锛屽鏉′欢鍒ゆ柇銆佸惊鐜佺被鍜屽璞°佷唬鐮佹祴璇曞強椤圭洰鐨勫疄鐜扮瓑銆傛瘡涓绔犵殑...
  • 闆鍩虹鍏ラ棬瀛︿範python鐖櫕鏈夊摢浜涔︾睄
    绛旓細銆 Python for Informatics 銆嬶紙涓枃缈昏瘧鍙婁俊鎭鐞嗕笓涓歅ython鏁欑▼銆嬶級锛岃繖鏈功涓嶄粎鏄竴鏈緢濂界殑Python鐖櫕鏂归潰鐨鍏ラ棬涔锛岃屼笖杩樻湁浠ヨ繖鏈功涓烘暀鏉愮殑閰嶅鐨凜oursera璇剧▼銆
  • Python 浠庡叆闂ㄥ埌绮鹃氭帹鑽愮湅鍝簺涔︾睄鍛?
    绛旓細銆Python缂栫▼:浠庡叆闂ㄥ埌瀹炶返銆嬭繖鏈功鍛紝鑳借浣犲揩閫熸帉鎻$紪绋嬪熀纭鐭ヨ瘑锛屽啓鍑哄彲浠ヨВ鍐冲疄闄呴棶棰樼殑浠g爜銆傝繖鏈涔︿粠鏈鍩虹鐨勫畾涔夊紑濮嬭璧凤紝閲嶈姒傚康閮界嫭绔嬫垚绔犺妭,姣忎釜鏂规硶闄勬湁娓呮櫚鐨勮鏄庡拰瀹為檯妗堜緥璁茶В銆傝繖鏈功鍜屽埆鐨勭紪绋嬫暀瀛涔︾睄涓嶅お涓鏍,杩欐湰涔﹁繍鐢ㄤ簡寰堝韬竟鐨勪緥瀛愶紝澶у箙搴︾殑澧炲己浜嗗涔犵殑瀹炶返鎬~~鎺ヤ笅鏉...
  • 瀛Python搴旇瀛﹀摢浜涗功鎴栬呯綉绔?
    绛旓細瀛︿範 Python 鐨勭綉璇惧拰涔︾睄鏈浠ヤ笅鍑犱釜锛氱綉璇炬帹鑽愶細銆奝ython 鏍稿績鍩虹銆嬶細杩欓棬璇鹃傚悎 Python 鏂版墜浠庡叆闂寮濮嬪涔狅紝娑电洊浜 Python 鐨勫熀纭璇硶锛岀被鍨嬶紝瀵硅薄锛屽嚱鏁帮紝闈㈠悜瀵硅薄绛夊唴瀹癸紝姣忚妭璇鹃兘鏈夐厤濂楃殑缁冧範棰樺拰妗堜緥銆傘Python 鍏ラ棬璇剧▼銆嬶細杩欓棬璇剧敱鐭ヤ箮鐨勫鏇茬紪绋嬭佸笀涓昏锛岄傜敤浜庝笉鍏峰 Python 鍩虹鐭ヨ瘑鐨勪汉銆
  • Python 浠庡叆闂ㄥ埌绮鹃氭帹鑽愮湅鍝簺涔︾睄鍛?
    绛旓細鍩虹绡1.銆婄鏂规硶瀛Python銆嬨婄鏂规硶瀛ython銆嬬殑鑻辨枃鐗堬紝鏈鍒濈殑鍑犵珷鏈夌偣鏋嚗锛屼絾濡傛灉鎶婁功閲岄潰鎵鏈変唬鐮侀兘鏁蹭竴閬嶏紝纭疄鑳藉鎶婂熀纭鎵撳ソ銆2.銆奝ython瀛︿範鎵嬪唽銆嬭繖绉嶅鍥戒汉鍐鐨勪功锛岄兘鏈夊叡鍚岀殑鐗圭偣锛岀壒鍒缁嗭紝姣忎釜鐭ヨ瘑鐐圭粰浣犺В閲婇忛忕殑锛岀湅鐨勬椂鍊欏彲浠ュ綋浣滀竴涓瓧鍏告潵缈伙紝杩欐湰涔︾‘瀹炴槸闈㈠悜鍒濆鑰呯殑銆傝繖鏈...
  • 扩展阅读:爬虫一单多少钱 ... 爬虫python全套教程 ... 爬虫python官网 ... 为什么爬虫会坐牢 ... python爬虫花多少钱 ... python爬虫接单多少钱 ... 零基础学python爬虫 ... 爬虫手机版 ... 十大免费爬虫软件 ...

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