摘要:的安装环境是后面创建用来运行的名网站域名在创建可以通过此文件运行本文件名父文件名路径和父文件名设置环境,必须以上运行可能在下会报错准备工作完在下获取列表页每一个的把获取到的交给
scrapy的安装 环境:python3.6 1
pip install -i https://pypi.douban.com/simple/ scrapy
scrapy startproject ArticleSpider
main.py是后面创建用来运行scrapy的
cd ArticleSpider scrapy genspider jobbole blog.jobbole.com ------- ---------------- spider名 网站域名
在ArticleSpider创建main.py,可以通过此文件运行scrapy
from scrapy.cmdline import execute import sys import os # print(__file__) #本文件名 # print(os.path.dirname(__file__)) #父文件名 # print(os.path.abspath(os.path.dirname(__file__))) #路径和父文件名 sys.path.append(os.path.dirname(os.path.abspath(__file__))) #设置环境,必须 execute(["scrapy", "crawl", "jobbole"])
以上运行可能在win下会报错
settings.py
准备工作完在jobbole.py下
# -*- coding: utf-8 -*- import scrapy from scrapy.http import Request import re from urllib import parse class JobboleSpider(scrapy.Spider): name = "jobbole" allowed_domains = ["blog.jobbole.com"] start_urls = ["http://blog.jobbole.com/all-posts/"] def parse(self, response): # 获取列表页每一个item的url post_urls = response.css("#archive .floated-thumb .post-thumb a::attr(href)").extract() for post_url in post_urls: print(post_url) yield Request(url=parse.urljoin(response.url, post_url), callback=self.parse_info) # 把获取到的url交给详情页的方法处理 # 获取下一页的url 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) # 把获取到的下一页的url交给自己的方法处理 """获取详情页的信息""" def parse_info(self, response): # 以下都是获取详情页信息 res_title = response.xpath("//div[@class="entry-header"]/h1/text()").extract_first() res_date = response.xpath("//p[@class="entry-meta-hide-on-mobile"]/text()").extract_first().strip().replace("·", "").strip() res_zhan = response.xpath("//span[contains(@class, "vote-post-up")]/h10/text()").extract_first() res_content = response.xpath("//div[@class="entry"]/p/text()").extract_first() res_cate_a = response.xpath("//p[@class="entry-meta-hide-on-mobile"]/a/text()").extract_first() res_cate_b = [i.strip() for i in res_cate_a if not i.strip().endswith("评论")] res_cate_c = ",".join(res_cate_b) res_shoucang = response.xpath("//div[@class="post-adds"]/span[2]/text()").extract_first().strip() match_obj1 = re.match(".*(d+).*", res_shoucang) if match_obj1: res_shoucang = match_obj1.group(1) else: res_shoucang = 0 res_comment = response.xpath("//div[@class="post-adds"]/a/span/text()").extract_first().strip() match_obj2 = re.match(".*(d+).*", res_comment) if match_obj2: res_comment = match_obj2.group(1) else: res_comment = 0
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44481.html
摘要:图片下载和拿到下载后的路径小封面图的爬取,后面通过传到中详情页的爬取详情页的完整地址下一页的爬取与请求不明打开功能注意如要进一步定制功能补充新建 图片下载和拿到下载后的路径 1 items.py import scrapy class InfoItem(scrapy.Item): url = scrapy.Field() url_object_id = scrapy....
摘要:前言本文记录自己在学习当中遇到的各种大小问题,持续更新。错误分析本身是一个网络引擎框架,的运行依赖于。在打开新建的项目后,报错显示。错误分析的默认依赖项当中没有,或者说默认查找的路径中找不到。 前言 本文记录自己在学习scrapy当中遇到的各种大小问题,持续更新。 环境简介: 语言版本 爬虫框架 IDE 系统 python3.5 scrapy1.4.0 pycharm win1...
摘要:基本优化为了不让每次启动添加它到定义类的初始方法中启动优化浏览器的自动开启与关闭在中加入信号链爬虫结束会输出 1:基本 Middlewares.py(downloader)showImg(https://segmentfault.com/img/bV182i?w=893&h=311); spider/xxx.pyshowImg(https://segmentfault.com/img/...
摘要:以某个开头以某个结尾某个任意多次,大于等于让某个取消贪婪匹配,可以理解为改为从左到右匹配到某个为止某个至少为一次,大于等于例某个出现到次等或者选或者有三种意思,中括号的任选一个就代表号,不代表任意字符了例非 ^ 以某个开头 $ 以某个结尾 * 某个任意多次,大于等于0 ? 让某个取消贪婪匹配,可以理解为改为从左到右匹配到某个为止 + 某个至少为一次,大于...
摘要:保存中的信息到本地文件自定义以格式保存到本地文件再到中添加使用自带方式以格式保存到本地文件再到中添加使用保存中的信息到同步设计表结构注意日期是类型,要转化成类型补充保存中的信息到异步去重写法 保存item中的信息到本地文件 1.自定义以json格式保存到本地文件 piplines.pyshowImg(https://segmentfault.com/img/bV1PEJ?w=740&h...
阅读 2545·2021-11-23 09:51
阅读 3103·2019-08-30 15:54
阅读 1051·2019-08-30 14:14
阅读 3499·2019-08-30 13:59
阅读 1354·2019-08-29 17:09
阅读 1443·2019-08-29 16:24
阅读 2828·2019-08-29 15:43
阅读 888·2019-08-29 12:45