Python3--baby网的数据爬取
发布日期:2021-07-01 04:21:13
浏览次数:3
分类:技术文章
本文共 2057 字,大约阅读时间需要 6 分钟。
上代码:
'''本代码用来爬取https://www.babyment.com/yingwenming/kaitou.php?start_letter=A&page=1的信息'''import requests,csv,time,randomfrom bs4 import BeautifulSoupfrom fake_useragent import UserAgent#获取ip列表def get_ip_list(): f=open('IP.txt','r') ip_list=f.readlines() f.close() return ip_list #从IP列表中获取随机IP def get_random_ip(ip_list): proxy_ip = random.choice(ip_list) proxy_ip=proxy_ip.strip('\n') proxies = {'http': proxy_ip} return proxies #功能:将信息写入文件 def write_file(filePath,row): with open(filePath,'a+',encoding='utf-8',newline='') as csvfile: spanreader = csv.writer(csvfile,delimiter='|',quoting=csv.QUOTE_MINIMAL) spanreader.writerow(row) #解析baby网def get_EnNames_list(url,ip_list): print('输入进来的url为:{}'.format(url)) #获取随机IP,headers防止ip被封 headers = {'User-Agent':str(UserAgent().random)} proxies = get_random_ip(ip_list) try: req = requests.get(url=url,headers=headers,proxies=proxies,timeout=10) except: print('运行出错10秒后重新运行') time.sleep(10) headers = {'User-Agent':str(UserAgent().random)} proxies = get_random_ip(ip_list) req = requests.get(url=url,headers=headers,proxies=proxies,timeout=10) #在利用find_all()注意要准确定位 soup = BeautifulSoup(req.text,'lxml') content = soup.find('table',class_='table') content = content.find('tbody') content = content.find_all('tr') name = [] #列表中没有find_all()方法,故需要利用for语句 for each in content: name.append(each.find_all('b')[0].get_text()) return name#获取baby网中所有的的英文名def get_EnNames(letter,ip_list): for number in range(1,100): url = 'https://www.babyment.com/yingwenming/kaitou.php?start_letter={}&page={}'.format(letter,number) #一个网页一个网页的获取我们需要的英文名 name = get_EnNames_list(url,ip_list) #当page遇到最大值时,name就会为空,我们利用这一点进行切换,进入下一个字母的爬取 if not name: print('{}开头的英文名共{}个'.format(letter,number-1)) break for each in name: #将一个列表分为多个列表,从而实现换行 a=[] a.append(each) write_file('A-Z.csv',a)if __name__ == "__main__": ip_list = get_ip_list() for letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': get_EnNames(letter,ip_list)
转载地址:https://mtyjkh.blog.csdn.net/article/details/79900137 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月20日 07时08分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
内存对齐详解
2019-05-01
秋招总结(一)-C++归纳
2019-05-01
秋招总结(三)-操作系统归纳
2019-05-01
带缓冲I/O 和不带缓冲I/O的区别与联系
2019-05-01
LINUX CP命令详解
2019-05-01
source insight快捷键及使用技巧
2019-05-01
映 射 ALT 键
2019-05-01
vim使用快捷键F4生成文件头注释、F5生成main函数模板、F6生成.h文件框架模板
2019-05-01
用python解析html
2019-05-01
OV5620的视频驱动
2019-05-01
C++中两个类交叉定义或递归定义的解决办法
2019-05-01
ECharts is not Loaded解决方案
2019-05-01
echarts切换tab时,第一个图表显示,第二个图表不显示的解决办法
2019-05-01
记一次Hive 行转列 引起的GC overhead limit exceeded
2019-05-01
OpenGL ES八 - 交叉存取顶点数据
2019-05-01
crontab定时任务写法
2019-05-01
nginx: [emerg] unknown directive "if($remote_addr" in /usr/local/tools/nginx/conf/nginx.conf:57
2019-05-01
module pip has no attribute main问题解决
2019-05-01
LeetCode 134.Gas Station (加油站)
2019-05-01