网站地址:http://www.17500.cn/p5/all.php


1、新建爬虫项目

scrapy startproject pfive

2、在spiders目录下新建爬虫

scrapy genspider pfive_spider www.17500.cn

3、在爬虫文件中修改入口url

start_urls = ['http://www.17500.cn/p5/all.php']

4、添加爬取条目

class PfiveItem(scrapy.Item):
#开奖期号
awardID = scrapy.Field()
#开奖日期
awardDate = scrapy.Field()
#开奖号码
awardNum = scrapy.Field()

5、编写爬虫,通过xpath解析网站

class PfiveSpiderSpider(scrapy.Spider):
name = 'pfive_spider'
allowed_domains = ['www.17500.cn']
start_urls = ['http://www.17500.cn/p5/all.php'] def parse(self, response):
list = response.xpath("//table/tbody/tr/td/table/tbody/tr[3]/td[@class='normal']/table/tbody/tr[@bgcolor='#ffffff']")
for l in list:
pfiveItem = PfiveItem()
pfiveItem['awardID'] = l.xpath('./td[1]/text()').extract_first()
pfiveItem['awardDate'] = l.xpath('./td[2]/text()').extract_first()
pfiveItem['awardNum'] = l.xpath('./td[3]/text()').extract_first()
yield pfiveItem

6、在配置文件中忽略robots.txt文件(仅学习用)

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

7、在配置文件中打开User_Agent

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

8、编写启动文件main.py

from scrapy import cmdline
cmdline.execute('scrapy crawl pfive_spider'.split())

按理说这样就可以了,但是却抓不到东西!!!


通过查看response.text,发现表格数据是异步加载的,百度如何处理这种网页

https://blog.csdn.net/dangsh_/article/details/78633566

这个博主通过使用selenium 自动化测试包解决了这个问题。

9、首先编写下载中间件,并在配置中添加

class JavaScriptMiddleware(object):

    def process_request(self, request, spider):
if spider.name == "pfive_spider":
driver = webdriver.Chrome("G:\\Crawler\chromedriver.exe") #指定使用的浏览器
driver.get(request.url)
time.sleep(1)
js = "var q=document.documentElement.scrollTop=10000" #模拟浏览页面
driver.execute_script(js) #可执行js,模仿用户操作。此处为将页面拉至最底端。
time.sleep(3)
body = driver.page_source
print ("访问"+request.url)
return HtmlResponse(driver.current_url, body=body, encoding='utf-8', request=request)
else:
return None

注意闭坑:chromedriver.exe的版本要和本机chrom浏览器的版本一致。

http://chromedriver.storage.googleapis.com/index.html

OK,到此为止,大功告成


不对,这还只是第一页的数据。。。等下补更

最新文章

  1. 在Windows server 2008 R2上安装Python3.5
  2. c#之Redis队列
  3. 打开Excel的报错,提示:不能使用对象链接和嵌入
  4. CUDA编程学习(二)
  5. JavaScript一些关键概念
  6. 周末充电之WPF(四).多窗口之间操作
  7. Java用ZIP格式压缩和解压缩文件
  8. orcale复制表结构及其数据
  9. Android补间动画笔记
  10. 升级PyCham到2017.3后import sys模块报错的问题
  11. 洛谷P3381 最小费用最大流
  12. 203. 阿里jetcache
  13. 对JS作用域和作用域链的理解
  14. docker 定时清理none镜像
  15. (转)Understanding, generalisation, and transfer learning in deep neural networks
  16. _spellmod_leech_aura
  17. Java应用分类
  18. redis哨兵集群环境搭建
  19. SSM整合(1): spring 与 springmvc 整合
  20. WP runtime post 请求, json 解析

热门文章

  1. 测开之路二十:比较v1和v2
  2. [python面试题] 什么是单例,单例有什么用,业务场景是什么
  3. USACO 5.5 章节
  4. [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)
  5. 希尔排序(shell)理论---不含源码
  6. Scrapy框架: 通用爬虫之SitemapSpider
  7. matplotlib系列——饼图
  8. java并发编程之美-阅读记录6
  9. 十、hibernate的延迟加载和抓取策略
  10. ARM与X86 CPU架构区别