scrapy实战二:欣欣旅游网西安景点的爬取

scrapy实战二:欣欣旅游网西安景点的爬取
1.目标:名称 景点地址 票价 开放时间
2.分析:
在这里插入图片描述需要点开具体景点进入景点界面才能获取全部目标
在这里插入图片描述查看元素知道可以以https://xian.cncn.com/jingdian/作为入口链接,让spider 在这个界面获取到具体景点的链接,交给下载中间件,下载中间件动态获取到具体景点的网页内容后,返回给spider,完成具体的工作。

第一页与后面的页面布局有点不同,先来试试

scrapy shell + url

attention1:
spot_list=response.xpath("//div[@class='city_spots_list']/ul/")#无效的xpath表达式,去掉ul后面#的'/'
attention2:
 spot_list = response.xpath("//div[@class='city_spots_list']/ul/li")
            for i in spot_list:
                url =i.xpath("./a/@href").extract_first()
                print(str(url))
                yield scrapy.Request(str(url), callback=self.parse, dont_filter=True)
#我一开始spot_list的xpath之写到了ul,结果是只能获取bingmayong的信息,仔细想想,spot_list里面只有一个#ul,所以每次遍历都是在ul上的,而不是ul里li

xinxin_point.py的代码,
在这里插入图片描述middleware.py的代码
在这里插入图片描述按照上面的逻辑,代码上倒是没什么。运行,ok,第一页所有景点的信息成功获取。
接下来是下一页的操作
在这里插入图片描述这次下一页是一个a标签,直接取出它的链接地址拼接一下就得到了,这里的if判断主要是控制是否到达最后一页,因为最后一页没有下一页这个标签,所以可以这样写。

然后就是存储数据了,和上一次差不多,没什么需要多说的,这次还是存入mysql。
在这里插入图片描述
爬虫运行完成,我看了看,报了一点错误
在这里插入图片描述再往上看
在这里插入图片描述应该是某次产生了 http://xian.cncn.com/jingdian// 这样的链接,而这个是我没有处理的,算是程序的bug。我算了一下景点数,一共是305个,而我数据库表里只有302条数据,而且个别数据有点奇怪,也许是布局独特吧——这里我不想去找了,就这样结束这次实践吧。

最后:这次爬取过程特别慢,因为每次都要打开新的网页,总用时(抱歉具体我没注意,运行的时候我出去打球了)差不多1个小时左右,所以以后想着怎么提速。也许可以换个爬取对象,毕竟我只需要一小部分数据,能找请求这些数据的链接就好了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值