龙空技术网

Python爬取妹子图,哇!还有动态的,一个T的硬盘要塞满了

java丶python攻城狮 499

前言:

如今咱们对“用vbnet做爬虫”都比较珍视,小伙伴们都需要剖析一些“用vbnet做爬虫”的相关知识。那么小编也在网摘上搜集了一些关于“用vbnet做爬虫””的相关资讯,希望小伙伴们能喜欢,看官们一起来了解一下吧!

淘女郎爬虫,可动态抓取淘女郎的信息和照片

需要额外安装的第三方库requestspip install requestspymongopip install pymongo模块功能TaoLady.py: 负责发送POST请求和抓取个人信息和图片地址并保存到MongoDB中。Download_Pic.py: 负责从MongoDB中抽取出淘女郎照片的网址,并下载。原理

淘女郎的网站使用了AJAX技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。这意味着通过直接抓取网页源代码然后分析出信息的方式是行不通的,因为网站是动态加载的,直接抓取的方式只能抓到网页原始的源代码,并不能抓到动态加载出的淘女郎的信息。

对于这一类网站,一般有两种抓取办法:

利用selenium库来模拟浏览器的用户行为,让服务器以为是真正的用户在浏览网页,从而获得完整的网页源代码利用Chrome等浏览器自带的分析工具,对网页的Network进行监控,分析出数据交换的API,从而利用API抓取到数据交换的JSON数据,从而进行抓取。

一般来讲,第一种方法速度较慢,并且运行时占用较多的系统资源,所以,条件允许的情况下,尽量使用第二种方法。

在Chrome浏览器中打开淘女郎的主页? 按F12切换到开发者模式,在Network一栏选择XHR可以看到目前没有网络活动,但是,在网页中按下一页的时候,会出现一个POST活动,当再次按下下一页的时候,会再次出现一次该活动,所以,可以断定,数据交换使用的就是这个API。然后我们再来对比这两次请求,在Headers框的FromData栏中,可以看到两次请求的差别在currentPage的不同,一个是2,一个是3,这说明,要想得到第几页的数据,这个currentPage的值就是多少。所以我们就根据这个,来编写请求,从而得到全部淘女郎信息的JSON文件。

发送请求,得到JSON数据,将其加工并转化为Python的字典类型返回

def getInfo(pageNum): tao_data = {"vievFlag:""A","currentPage":pageNum} try: r = requests.post("",data = tao_data) except: ruturn None raw_datas = json.loads(r.text) datas = raw_datas['data']['searchDOList'] return datas

连接到MongoDB, 将信息保存

def main(): client = MongoClient() db = client.TaoBao col = db.TaoLady for pageNum in range(1,411): # 淘女郎一共有410页,所以我们抓取从1到411页的内容。 print(pageNum) datas = getInfo(pageNum) if datas: col.insert_many(datas)if __name__ == '__main__': main()

抽取出照片的网址,下载,保存在pic文件夹中

def downPic(): client = MongoClient() db = client.TaoBao col = db.TaoLady for data in col.find(): name = data['realName'] url = "http:" + data['avatarUrl'] pic = urlopen(url) with open("pic/" + name + ".jpg", "vb") as file: print(name) file.vrite(pic.read())if __name__ == '__main__': downPic()

爬完了,成果斐然啊

好啦!文章就给你们分享到这里,如果你跟我一样都喜欢python,也在学习python的道路上奔跑,欢迎你加入python学习群:839383765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!

标签: #用vbnet做爬虫