python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略
点击上方“IT共享之家”,进行关注
回复“资料”可获赠Python学习福利
【一、项目背景】
穷游网提供原创实用的出境游旅行指南、攻略,旅行社区和问答交流平台,以及智能的旅行规划解决方案,同时提供签证、保险、机票、酒店预订、租车等在线增值服务。穷游“鼓励和帮助中国旅行者以自己的视角和方式体验世界”。
今天教大家获取穷游网的城市信息,使用Python将数据写入csv文档。
【二、项目目标】
实现将获取对应的城市、图片链接、热点、批量下载 保存csv文档。
【三、涉及的库和网站】
1、网址如下:
https://place.qyer.com/south-korea/citylist-0-0-{}
2、涉及的库:requests、lxml、fake_useragent、time、csv
【四、项目分析】
首先需要解决如何对下一页的网址进行请求的问题。可以点击下一页的按钮,观察到网站的变化分别如下所示:
- https://place.qyer.com/south-korea/citylist-0-0-1- https://place.qyer.com/south-korea/citylist-0-0-2- https://place.qyer.com/south-korea/citylist-0-0-3
观察到只有citylist-0-0-{}/变化,变化的部分用{}代替,再用for循环遍历这网址,实现多个网址请求。
【五、项目实施】
1、我们定义一个class类继承object,然后定义init方法继承self,再定义一个主函数main继承self。准备url地址。
import requests,osfrom lxml import etreeimport randomimport timefrom fake_useragent import UserAgentclass Travel(object): def __init__(self): self.url = "https://place.qyer.com/south-korea/citylist-0-0-{}/" def main(self): passif __name__ == '__main__': spider= Travel() spider.main()
2、随机产生UserAgent。
self.film_list = [] ua = UserAgent(verify_ssl=False) for i in range(1, 50): self.film_list.append(ua.chrome) self.Hostreferer = { 'User-Agent': random.choice(self.film_list) }
3、多页请求。
startPage = int(input("起始页:")) endPage = int(input("终止页:")) for page in range(startPage, endPage + 1): url = self.url.format(page)
4、定义get_page方法,进行数据请求。
'''数据请求''' def get_page(self, url): html = requests.get(url=url, headers=self.Hostreferer).content.decode("utf-8") self.page_page(html) # print(html)//网页 # print(self.headers)//构造头
5、定义page_page,xpath解析数据, for循环遍历数组。
在谷歌浏览器上,右键选择开发者工具或者按F12。右键检查,xpath找到对应信息的字段。如下图所示。
parse_html = etree.HTML(html) image_src_list = parse_html.xpath('//ul[@class="plcCitylist"]/li') for i in image_src_list: b = i.xpath('.//h3//a/text()')[0].strip() c = i.xpath('.//p[@class="beento"]//text()')[0].strip() d = i.xpath('.//p[@class="pics"]//img//@src')[0].strip()
6、定义csv文件保存数据,写入文档。
# 创建csv文件进行写入 csv_file = open('scrape.csv', 'a', encoding='gbk') csv_writer = csv.writer(csv_file) csv_writer.writerow([b, c, d]) csv_file.close(
7、在main方法调用。
def main(self): for i1 in range(1, 25): url = self.url.format(i1) # print(url) html = self.get_page(url) time.sleep(2) print("第%d页" % i1)
8、time模块,设置时间延迟。
time.sleep(2)
【六、效果展示】
1、点击运行,输入起始页,终止页。
2、将下载成功信息显示在控制台。
3、保存csv文档。
【七、总结】
1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
2、希望通过这个项目,能够帮助大家对csv文档处理有进一步的了解。
3、本文基于Python网络爬虫,利用爬虫库,实现穷游网的获取。实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
4、可以根据自己的需要选择自己的喜欢的城市获取自己想要的有效信息 。
5、需要本文源码的小伙伴,后台回复“穷游攻略”四个字,即可获取。
看完本文有收获?请转发分享给更多的人
IT共享之家
入群请在微信后台回复【入群】
------------------- End -------------------
往期精彩文章推荐:
一篇文章教会你用Python抓取抖音app热点数据
一篇文章教会你使用Python定时抓取微博评论
手把手教你使用Python抓取QQ音乐数据(第四弹)
python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略相关推荐
- python3爬虫有道翻译_一篇文章教会你利用Python网络爬虫获取有道翻译手机版的翻译接口...
[一.项目背景] 有道翻译作为国内最大的翻译软件之一,用户量巨大.在学习时遇到不会的英语词汇,会第一时间找翻译,有道翻译就是首选.今天教大家如何去获取有道翻译手机版的翻译接口. ![image](ht ...
- 利用python从网络上爬取图片_一篇文章教会你利用Python网络爬虫抓取王者荣耀图片...
点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 王者荣耀作为当下最火的游戏之一,里面的人物信息更是惟妙惟肖,但受到 ...
- 如何用python搜索要用的素材_一篇文章教会你利用Python网络爬虫获取素材图片
[一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. [二.项目目标] 1.根据给定的网址获取网页源代码. 2.利用正则 ...
- python下载电影天堂视频_一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接...
点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的 ...
- python下载电影天堂视频教程_一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知 ...
- python爬取素材图片代码_一篇文章教会你利用Python网络爬虫获取素材图片
[一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. [二.项目目标] 1.根据给定的网址获取网页源代码. 2.利用正则 ...
- 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
[一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...
- 一篇文章教会你利用Python网络爬虫实现豆瓣电影采集
点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务. ...
- 一篇文章教会你利用Python网络爬虫获取素材图片
点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可 ...
最新文章
- 漫画:垃圾男人分类图鉴
- php的filter input,记一个php://filter和php://input的CTF题
- qt 中给 按纽(button) 填充图片的方法
- shell脚本把昨天的txt打成tar包
- window的war发布Linux失败,为什么war包在Windows的tomcat正常运行,在linux服务器报errorpage错误?...
- UI历练素材|成功,少不了的临摹进阶
- Eclipse 相同变量背景高亮显示设置(Occurrences)
- Redis BigKey
- 微信小程序获取scope中权限管理
- vue 判断是否function_vue2.0组件的prop验证中的Function类型怎么使用(向子组件传递函数对象的正确方法)?...
- 天翼对讲机写频软件_手台对讲机应该怎么选?
- 【Python+OpenCV+PyTorch】基于Python的连连看自动操作器
- U盘Windows PE 安装系统简易教程
- input标签 各属性解释
- 正点原子i.mx6ullMini开发板用SPI驱动RC522门禁卡模块
- 达梦数据库授权到期替换key文件
- 虚拟机Ubuntu安装中文输入法
- 关于计算机运行管理模式,浅谈学校计算机机房管理及维护运行模式.docx
- 自我规范模版A要求2:展示数据列表 (无从表)和导出数据页面
- i7台式电脑配置推荐_专业设计师电脑配置推荐 i7-7700配K2200组装台式电脑配置及报价...
热门文章
- 我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?分享一下!
- 初学者是学习 C 语言还是 C++ 好?各有何利弊?
- 2022年,我只做 3 件事
- 实验报告-python文库_python程序设计与实践大作业
- Vondrak滤波原理详解及Matlab实现
- 在一个热图中使用多个颜色主题
- 哪个学校既教计算机教英语翻译,教学计算机专业的英语翻译.doc
- .net post提交后接收返回数据_读完这一篇IT程序员终于明白post和get的区别
- 基于java的土地档案管理系统设计(含源文件)
- origin tangent插件_如何用origin绘制切线