scrapy学习记录(金沙官网线上未完待续)

解决方法:参考文章——scrapy爬取新浪网导航页所有大类、小类、小类里的子链接,以及子链接页面的新闻内容

新建爬虫:cd 项目名 后 scrapy genspider +爬虫文件名+爬取的域名

formdata的 参数值 必须是unicode , str 或者 bytes object,不能是整数。

shell交互界面:scrapy shell +网址

注意!!!

运行爬虫:scrapy crawl + 爬虫文件(无后缀)

5. mysql 让清空表且自增的id重新从1开始

运行爬虫并保存输出文件:scrapy crawl + 爬虫文件(无后缀)-o 输出文件名(.json/.jl/.csv/.xml/.pickle/.marshal)

金沙官网线上 1

各个文件的作用

解决方法:post请求

注意:

金沙官网线上 2

解决方法:将create_time字段设置为timestamp 并设置默认值CURRENT_TIMESTAMP

pipelines

pipelines主要用于数据的进一步处理,比如类型转换、存储入数据库、写到本地等。
pipelines是在每次spider中yield item 之后调用,用于处理每一个单独的item。

import json

class NjuptPipeline(object):
    def __init__(self):
        self.file = open('njupt.txt',mode='wb')
    def process_item(self, item, spider):
        self.file.write(item['news_title'].encode("GBK"))
        self.file.write("n")
        self.file.write(item['news_date'].encode("GBK"))
        self.file.write("n")
        self.file.write(item['news_url'].encode("GBK"))
        self.file.write("n")
        return item

记得修改settings文件,pipelines才能生效

金沙官网线上 3

settings文件

原因:scrapy抓包时的输出就能发现,在请求我们设定的url之前,它会先向服务器根目录请求一个txt文件

新建项目:scrapy startproject +项目名

这个文件中规定了本站点允许的爬虫机器爬取的范围(比如你不想让百度爬取你的页面,就可以通过robot来限制),因为默认scrapy遵守robot协议,所以会先请求这个文件查看自己的权限,而我们现在访问这个url得到

禁止ROBOTSTXT_OBEY

打开settings.py文件,将ROBOTSTXT_OBEY修改为False

它默认为True,就是要遵守robots.txt 的规则,那么 robots.txt 是个什么东西呢?
通俗来说, robots.txt 是遵循 Robot 协议的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。

当然,我们并不是在做搜索引擎,而且在某些情况下我们想要获取的内容恰恰是被 robots.txt 所禁止访问的。所以,某些时候,我们就要将此配置项设置为 False ,拒绝遵守 Robot协议 !

所以在这里设置为False。当然可能本次爬取不一定会被它限制,但是我们一般来说会首先选择禁止它。

 1 User-agent: * 2 Disallow: / 

回调函数

需要哪个函数来处理这个返回值,就调用哪个函数,返回值会以参数的形式传递给你所调用的函数。

本文由金沙官网线上发布于编程,转载请注明出处:scrapy学习记录(金沙官网线上未完待续)

您可能还会对下面的文章感兴趣: