温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Python一步完成动态数据的爬取

发布时间:2021-10-09 16:15:55 来源:亿速云 阅读:161 作者:柒染 栏目:大数据

今天就跟大家聊聊有关如何使用Python一步完成动态数据的爬取,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言

         最近又到了写毕业论文的季节了,有好多粉丝朋友私信我说老哥能不能帮我爬点数据让我来写论文,这时正好有位小女生正在打算买只小喵咪,于是老哥在全网搜索于是发现了下面的网站只好动动自己的小手,来完成这个艰巨的任务了,有喜欢爬虫的同学,或有需要爬取数据的同学可以私聊老哥。

页面分析

         我们通过访问一下地址 :http://www.maomijiaoyi.com/index.php?/chanpinliebiao_pinzhong_38.html
         这时我们可以看到一些喵咪的列表,但是通过F12观看实际是返回的一个页面,而不是我们常用的Json,此时我们还需要将返回的页面打开才能获取到具体喵咪的详细信息,例如:价格、电话、年龄、品种、浏览次数等等。
如何使用Python一步完成动态数据的爬取
这时我们需要做的

  1. 解析返回的列表

  2. 将地区数据解析出来

  3. 请求喵咪的具体信息

  4. 解析返回的页面

  5. 将数据保存csv文件

CSV 文件

         启动程序将会保存一下内容:
如何使用Python一步完成动态数据的爬取

代码实现

1、导入依赖环境

`import requests # 返送请求 pip install requests` 
`import parsel # html页面解析器 pip install  parsel` 
`import  csv # 文本保存`

2、获取喵咪的列表

`url = "http://www.maomijiaoyi.com/index.php?/chanpinliebiao_pinzhong_37_"+str(i)+"--24.html"`
 `headers = {`
 `'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36'`
 `}`
 `data = requests.get(url=url, headers=headers).text`
 `selector = parsel.Selector(data)`
 `urls = selector.css('div .content:nth-child(1) a::attr(href)').getall()`

3、根据去获取喵咪的具体数据

 `for s in regionAndURL:`
 `url = "http://www.maomijiaoyi.com" + s[0]`
 `address = s[1]`
 `data = requests.get(url=url, headers=headers).text`
 `selector = parsel.Selector(data)`
 `title = selector.css('.detail_text .title::text').get().strip()  ## 标签`
 `price = selector.css('.info1 span:nth-child(2)::text').get().strip()  ## 价格`
 `viewsNum = selector.css('.info1 span:nth-child(4)::text  ').get()  ## 浏览次数`
 `commitment = selector.css('.info1 div:nth-child(2) span::text  ').get().replace("卖家承诺: ", "")  # 卖家承诺`
 `onlineOnly = selector.css('.info2 div:nth-child(1) .red::text  ').get()  # 在售只数`
 `variety = selector.css('.info2 div:nth-child(3) .red::text  ').get()  # 品种`
 `prevention = selector.css('.info2 div:nth-child(4) .red::text  ').get()  # 预防`
 `contactPerson = selector.css('.user_info div:nth-child(1) .c333::text  ').get()  # 联系人姓名`
 `phone = selector.css('.user_info div:nth-child(2) .c333::text  ').get()  ## 电话`
 `shipping = selector.css('.user_info div:nth-child(3) .c333::text  ').get().strip()  # 运费`
 `purebred = selector.css('.item_neirong div:nth-child(1) .c333::text').get().strip()  # 是否纯种`
 `quantityForSale = selector.css('.item_neirong div:nth-child(3) .c333::text').get().strip()  # 待售数量`
 `catSex = selector.css('.item_neirong div:nth-child(4) .c333::text').get().strip()  # 猫咪性别`
 `catAge = selector.css('div.xinxi_neirong .item:nth-child(2)  div:nth-child(2) .c333::text').get().strip()  # 猫咪年龄`
 `dewormingSituation = selector.css(`
 `'div.xinxi_neirong .item:nth-child(2)  div:nth-child(3) .c333::text').get().strip()  # 驱虫情况`
 `canWatchCatsInVideo = selector.css(`
 `'div.xinxi_neirong .item:nth-child(2)  div:nth-child(4) .c333::text').get().strip()  # 可视频看猫咪`

4、将数据保存为csv文件

`f = open('喵咪.csv', mode='a', encoding='utf-8', newline='')`
`csvHeader = csv.DictWriter(f,`
 `fieldnames=['地区', '标签', '价格', '浏览次数', '卖家承诺', '在售只数', '地区', '品种', '预防', '联系人姓名', '电话',`
 `'运费', '是否纯种', '待售数量', '猫咪性别', '猫咪年龄', '驱虫情况', '可视频看猫咪', '详情地址'])`
`#设置头`
`csvHeader.writeheader()`
 `dis = {`
 `'地区': address,`
 `'标签': title,`
 `'价格': price,`
 `'浏览次数': viewsNum,`
 `'卖家承诺': commitment,`
 `'在售只数': onlineOnly,`
 `'品种': variety,`
 `'预防': prevention,`
 `'联系人姓名': contactPerson,`
 `'电话': phone,`
 `'运费': shipping,`
 `'是否纯种': purebred,`
 `'待售数量': quantityForSale,`
 `'猫咪性别': catSex,`
 `'猫咪年龄': catAge,`
 `'驱虫情况': dewormingSituation,`
 `'可视频看猫咪': canWatchCatsInVideo,`
 `'详情地址': url`
 `}`
 `csvHeader.writerow(dis)`

看完上述内容,你们对如何使用Python一步完成动态数据的爬取有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI