糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Python爬虫框架Scrapy学习笔记原创

Python爬虫框架Scrapy学习笔记原创

时间:2020-11-02 08:59:30

相关推荐

Python爬虫框架Scrapy学习笔记原创

字号 scrapy

[TOC]

开始

scrapy安装

首先手动安装windows版本的Twisted

https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

pip install Twisted-18.4.0-cp36-cp36m-win_amd64.whl

安装scrapy

pip install -i /simple/ scrapy

windows系统额外需要安装pypiwin32

pip install -i /simple pypiwin32

新建项目

开始一个项目

E:\svnProject> scrapy startproject TestSpider

生成一个新的爬虫(generate)

E:\svnProject> cd TestSpider E:\svnProject\TestSpider> scrapy genspider dongfeng

启动一个爬虫

E:\svnProject\TestSpider> scrapy crawl dongfeng

SHELL模式

> scrapy shell / # 命令行调试该网页

pycharm调试启动文件

E:\svnProject\TestSpider> vim main.py import sys import os from scrapy.cmdline import execute BASE_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.append(BASE_DIR) # scrapy crawl dongfeng execute(["scrapy", "crawl", "dongfeng"])

项目基本配置

E:\svnProject\TestSpider\TestSpider> vim settings.py ROBOTSTXT_OBEY = False # 不要遵循网站robots文件

XPATH

>注意:XPATH在选择时,参考的是HTML源码,而不是JS加载后的HTML代码

操作例子

title_selector = response.xpath("//div[@class='entry-header']/h1/text()") title_str = title_selector.extract()[0]

CSS选择器

操作例子

h1_selector = response.css(".container h1::text") # 选取h1标题的内容 h1_str = h1_selector.extract_first() # 取出数组第一个,如果没有为空

爬虫

爬取某网站文章列表例子

>>> vim ArticleSpider/spiders/jobbole.py import scrapy from scrapy.http import Request from urllib import parse import re from ArticleSpider.items import ArticleItem from mon import get_md5 # url转md5 class JobboleSpider(scrapy.Spider): name = 'jobbole' allowed_domains = [''] start_urls = ['/all-posts/'] def parse(self, response): """ 文章列表页的文章链接解析 :param response: :return: """ css = "#archive > .post > .post-thumb > a" article_urls_selector = response.css(css) # 获取当前列表页所有文章的链接 for article_url_selector in article_urls_selector: head_img_url = article_url_selector.css("img::attr(src)").extract_first() # 封面URL head_img_full_url = parse.urljoin(response.url, head_img_url) # 封面图片完整URL article_url = article_url_selector.css("a::attr(href)").extract_first("") # 文章URL article_full_url = parse.urljoin(response.url, article_url) # 智能的拼接URL,相对地址直接对接;绝对地址只取出域名对接;完全地址不对接,直接获取。 yield Request(url=article_full_url, callback=self.article_parse, meta={"head_img_full_url": head_img_full_url}) # 请求文章详情页并设置回调函数解析内容和meta传参 next_url = response.css(".next.page-numbers::attr(href)").extract_first("") if next_url: yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse) # 下一页文章列表使用递归 def article_parse(self, response): """ 文章详情页的内容解析 :param response: :return: """ title = response.css(".grid-8 .entry-header > h1::text").extract_first("") # 标题内容

如果觉得《Python爬虫框架Scrapy学习笔记原创》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。