资讯专栏INFORMATION COLUMN

scrapy 自学入门demo分享

linkFly / 1420人阅读

摘要:本文基于,平台完整项目代码安装安装官网下载注意环境变量是否配置成功安装为了安装顺利,请备好梯子安装过程中注意以下报错信息解决办法下载对应版本的文件表示版本表示位下载后在文件目录下执行文件名创建项目创建创建在项目跟目录执行配置文件

本文基于python 3.7.0,win10平台; 2018-08

完整项目代码:https://github.com/NameHewei/python-scrapy

安装 安装python

官网下载 https://www.python.org/

注意环境变量是否配置成功

安装scrapy
为了安装顺利,请备好梯子

pip install Scrapy

安装过程中注意以下报错信息:

Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

解决办法:

https://www.lfd.uci.edu/~gohl... 下载对应版本twisted的whl文件

cp:表示python版本

amd64:表示64位

下载后在文件目录下执行: pip install Twisted-18.7.0-cp37-cp37m-win_amd64.whl(文件名)

创建项目

创建scrapy:scrapy startproject youName

创建spider:scrapy genspider // 在项目跟目录执行

配置settings.py文件

如果抓取的内容包含中文可配置:FEED_EXPORT_ENCODING = "utf-8"

报错误信息403:把USER_AGENT加上(可在网站请求头信息中查看)

编写items.py文件
import scrapy

class NovelItem(scrapy.Item):
    title = scrapy.Field()
    content = scrapy.Field()

这些即你需要保存的字段名

编写spider
import scrapy

# 引入自定义的items
from myTest.items import NovelItem

# # 继承scrapy.Spider
class NovelSpider(scrapy.Spider):
    # 爬虫名
    name = "novel_spider"
    # 允许的域名
    allowed_domains = ["http://www.danmeila.com"]
    # 入口url 扔到调度器里面去
    start_urls = ["http://www.danmeila.com/chapter/20180406/29649.html"]


    def parse(self, response):
        movieList = response.xpath("//*[@id="container"]/div[3]/div[2]/div[2]/div/div/ul/li")
        novelContent = NovelItem()
        for item in movieList:
            u = "http://www.danmeila.com" + item.xpath(".//a/@href").extract_first()
            
            yield scrapy.Request(u, callback= self.content_a, meta= { "nc": novelContent }, dont_filter = True)
            # 放到管道里否则 pipeline获取不到
            # 如果你发现拿到的内容一直为空,注意是否被过滤了,即dont_filter没有设置


    def content_a(self, response):
        novelContent = response.meta["nc"]
        novelContent["title"] = response.xpath("//*[@id="J_article"]/div[1]/h1/text()").extract_first()

        yield novelContent

注意以下几点:

采用xpath编写,在浏览器中可以直接查看元素,找到要爬取内容的标签,右键选copy xpath

extract_first()的使用;text() 获取文本;@属性名 获取属性值

在父节点下使用xpath路径前要加./

去除换行空格用 xpath("normalize-space(".//div/text()")")

执行

导出为json: scrapy crawl your-spider-name -o test.json

如果出现报错信息:

async语法错误,把用到该名称作为参数的文件全部作修改 把这个参数名改为其它即可

报错 No module named "win32api": 到https://pypi.org/project/pypi...(下载文件pypiwin32-223-py3-none-any.whl 执行 pip install pypiwin32-223-py3-none-any.whl )

欢迎交流 Github

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44788.html

相关文章

  • 非计算机专业小白自学爬虫全指南(附资源)

    摘要:爬虫是我接触计算机编程的入门。练练练本文推荐的资源就是以项目练习带动爬虫学习,囊括了大部分爬虫工程师要求的知识点。拓展阅读一文了解爬虫与反爬虫最后,请注意,爬虫的工作机会相对较少。 爬虫是我接触计算机编程的入门。哥当年写第一行代码的时候别提有多痛苦。 本文旨在用一篇文章说透爬虫如何自学可以达到找工作的要求。 爬虫的学习就是跟着实际项目去学,每个项目会涉及到不同的知识点,项目做多了,自然...

    CarlBenjamin 评论0 收藏0
  • egg 自学入门demo分享

    摘要:编写在文件夹下添加,文件这里用于获取数据库中的数据添加路由确保数据库能连接成功后,便可以启动项目。本文只是辅助介绍快速搭建一个基本的项目,具体内容请参考若有疑问或错误,请留言,谢谢 2018-08,本文适用于对egg有兴趣想要了解的同学完整项目代码:https://github.com/NameHewei/node-egg 项目主要文件目录结构 |—— app |—— con...

    Olivia 评论0 收藏0
  • scrapy入门

    摘要:快速入门首先,初步要做的就是快速构建一个爬虫。然后把结果加入到一个队列中。既然是入门,我们肯定是先关心我们需要的。 因为公司项目需求,需要做一个爬虫。所以我一个python小白就被拉去做了爬虫。花了两周时间,拼拼凑凑总算赶出来了。所以写个blog做个记录。 快速入门 首先,初步要做的就是快速构建一个爬虫。 配置环境 Mac下安装 1) 直接从官网下载 python下载官网 2) 是通过...

    CrazyCodes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<