大数据 爬虫Python AI Sql玩耍PythonPythoner集中营

Scrapy-02(系列篇2)-爬虫&云服务器定时调度(

2018-11-18  本文已影响12人  丨像我这样的人丨

项目过程

1.云服务器配置
2.Scrapy爬虫撸代码
3.ProxyPool动态IP代理池
4.云服务器调度

工具


2.Scrapy爬虫代码(京东搜索零食)

强烈推荐公众号 皮克啪的铲屎官
此部分代码基本都来自他发布的文章《PeekpaHub》 全栈开发
不仅仅是爬虫 服务器的配置等都是从这里学习的
当然除了京东爬虫外 他还有很多有意思的爬虫 关注有惊喜 感谢作者皮克啪的铲屎官的提供的帮助和学习


下面是我一些补充
talking is short show me your code
废话少说 放码过来
京东零食爬虫Github

爬虫主要文件 jdSpider.py

原作者是使用BeautifulSoup进行html解析 我觉还是用xpath更方便简洁一些 于是改写成了xpath解析 实现的最终效果是一样的
还有个地方可以提一下
通常都是这么写 在items定义好后一个一个赋值上去

可以改成如下更简洁(这种写法出自崔庆才老师的爬虫教程 也感谢这位老师 )
 for field in goods.fields:
      try:
        goods[field] = eval(field)
      except NameError:
        self.logger.debug("Field is Not Defined " + field)
 yield goods
items.py
这个文件最简单了 定义一下就好了 没什么说的
piplines.py

这里MONGO_URL会在settings.py中申明 实际填的就是服务器内网IP
一旦填了服务器内网IP后 上传到服务器中运行 是没有问题的 但在本地是无法跑通测试这个项目的 会报数据库连接不上的错误
要想成功在本地测试项目代码 两种修改:
middiewares.py

尤其是在云服务器上运行时 要保证爬虫的健壮稳定
中间件需要增加很多异常处理 就要防止爬虫各种意外排取失败
常用三招:

agents = [
    "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5",
    "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7",
    "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.27 (KHTML, like Gecko) Chrome/12.0.712.0 Safari/534.27",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1",
    "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7",
    "Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0.2pre",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10",
]

爬虫三招全都用上 基本上都能顺利爬取

settings.py

最后一个文件 这个就非常简单
简单的设置下

DOWNLOADER_MIDDLEWARES = {
   'jdGoodsSpider.middlewares.UserAgentMiddleware': 543,
   'jdGoodsSpider.middlewares.ProxyMiddleware': 200,
}
ITEM_PIPELINES = {
   'jdGoodsSpider.pipelines.MongoPipeline': 300,
}
# 爬取最大页数
MAX_PAGE_NUM = 100
#开始页
START_URL = ['https://search.jd.com/Search?keyword=%E9%9B%B6%E9%A3%9F&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=lingshi&stock=1&click=0&page=1']
#禁止重定向
REDIRECT_ENABLED = False
#超时时间20s
DOWNLOAD_TIMEOUT = 20
#下载延迟1s
DOWNLOAD_DELY = 1
#服务器mongodb内网IP
MONGO_URL = 'mongodb://XXX.XX.XXX.XX/'
#数据库表名
MONGO_DB = 'JD'
Scrapy代码部分就结束了

Github源码

下一篇 ProxyPool动态IP代理池
上一篇下一篇

猜你喜欢

热点阅读