利用scrapy框架进行爬虫

1.安装
先安装wheel:pip install wheel
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
然后下载lxml…,pywin…,Twisted… 这三个文件
至于版本:cp38就是python 3.8, amd64就是当初安装的64位的python
最后,pip install scrapy

2.用scrapy爬虫四步走:
第一步:编写items.py
第二步:编写spiders下的 XXX.py 文件
第三步:编写pipelines.py文件
第四步:打开settings.py 文件更改配置

3.基于scrapy爬虫框架,只需在命令行中输入“scrapy startproject XXX”命令,之后一个名为XXX的爬虫项目将自动创建。

4.scrapy框架中执行scrapy crawl douban

5.python中self:
self在定义时需要定义,但是在调用时会自动传入。
self的名字并不是规定死的,但是最好还是按照约定是用self
self总是指调用时的类的实例。

6.scrapy框架
Spider是一个继承自scrapy.contrib.spiders.CrawlSpider的Python类,有三个必需的定义的成员
name: 名字,这个spider的标识,在爬虫项目中是唯一的
start_urls:一个url列表,spider从这些网页开始抓取
parse():一个方法,当start_urls里面的网页抓取下来之后需要调用这个方法解析网页内容,同时需要返回下一个需要抓取的网页,或者返回items列表

7.运行scrapy程序有两种方法:
1、直接命令行启动
进入到项目的根目录下,执行下列命令:
1.scrapy crawl XXX
2.新建一个.py文件,写入启动命令,例如run.py:

# -*- coding: utf-8 -*-
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', '爬虫名'])

9.对于未知节点:xpath可以使用 //* 选取文档中的所有元素

10.python中读取json文件报错,TypeError:the Json object must be str, bytes or bytearray,not ‘TextIOWrapper’
解决方法:
首先要弄明白json有四个方法:dumps和loads、dump和load。其中,dumps和loads是在内存中转换(python对象和json字符串之间的转换),而dump和load则是对应于文件的处理。
出现这个错误的原因是自己用了loads方法去将json文件转换为python对象,而正确的应该是使用load方法。

11.变量不能同时作为global变量和子函数传递的变量

12.scrapy动态传参给spider
第一步:定义一个__init__函数,用户接受参数:

import scrapy
class TestSpider(Scrapy.Spider):
    def __init__(self, 参数=None):
        if 参数 is None:
            self.参数= 0
        else:
            self.参数=arg

第二步:启用命令行记得加-a
scrapy crawl 爬虫名 -a 参数=参数值

13.scrapy安装MySQL驱动https://pypi.org/project/mysqlclient/#files
下载对应的whl包,然后pip install whl包名

14.当url地址不完整时,可以通过python自带的urllib模块,进行拼接

# 获取下一页的url,但是url还不完整
next_url = response.xpath("//li[@class='next']/a/@href").extract_first()
        if next_url is not None:
        # 使用urllib模块中urljoin进行拼接
            next_url = urllib.parse.urljoin(response.url,next_url)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值