Python3--爬取数据之911网站信息爬取
发布日期:2021-07-01 04:21:08
浏览次数:3
分类:技术文章
本文共 3568 字,大约阅读时间需要 11 分钟。
上代码:
#***************************************************#这份代码用于从911网站上爬取信息#其中的IP.txt文件为我本地存IP的文件##***************************************************import requests,csvimport pandas as pdimport time,randomfrom bs4 import BeautifulSoupfrom fake_useragent import UserAgent#利用pandas读取csv文件def getNames(csvfile): data = pd.read_csv(csvfile) # 1--读取的文件编码问题有待考虑 names = data['name'] return names '''获取IP列表事先已经在网上爬取了大量ip地址存入IP.txt中IP地址的获取方法参照我的另一篇博客( Python--代理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 parsePage(url,ip_list): fuck_header= {'User-Agent':str(UserAgent().random)} proxies = get_random_ip(ip_list) try: r = requests.get(url, proxies=proxies, headers=fuck_header, timeout=10,verify=False) #verify设置为False,Requests也能忽略对SSL证书的验证。 except: #2--verify的说明有待补充 print('运行错误,程序暂停20秒') time.sleep(20) fuck_header= {'User-Agent':str(UserAgent().random)} proxies = get_random_ip(ip_list) r = requests.get(url, proxies=proxies, headers=fuck_header, timeout=10, verify=False) if r.status_code == 200: #状态码status_code为200代表爬取成功,为404则为未爬取到相关信息 soup = BeautifulSoup(r.text, 'lxml') body = soup.find("div", class_="pp") contents = body.find_all('p') return r.status_code, contents else: return r.status_code, Nonedef getDict(contents): namesChineseTransliteration = [] #中文音译 namesGender = [] #名字性别 namesFromLanguage = [] #来源语种 namesMoral = [] #名字寓意 namesImpression = [] #名字印象 namesMeaning = [] #名字含义 #get_text() 方法,这个方法获取到tag中包含的所有文版内容包括子孙tag中的内容,并将结果作为Unicode字符串返回 #[4:]:读取第五的字符以后的字符 namesChineseTransliteration.append(contents[1].get_text()[4:]) namesGender.append(contents[-5].get_text()[4:]) namesFromLanguage.append(contents[-4].get_text()[4:]) namesMoral.append(contents[-3].get_text()[4:]) namesImpression.append(contents[-2].get_text()[4:]) namesMeaning.append(contents[-1].get_text()[4:]) str_row=namesChineseTransliteration+namesGender+namesFromLanguage+namesMoral+namesImpression+namesMeaning return str_row#功能:将信息写入文件 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)if __name__ == "__main__": for i in range(26,27): names = getNames("{}.csv".format(i)) #获取需要爬取文件的名字 base_url = "https://myingwenming.911cha.com/" #kzb--在地址后面追加了xm_ ip_list = get_ip_list() for j in range(len(names)): url = base_url + names[j] + ".html" status_code, contents = parsePage(url,ip_list) print(names[j], status_code) if status_code == 200: #状态码为200爬取成功,状态码为404爬取失败 str_row = getDict(contents) # row = names[j]+str_row temp = [] temp.append(names[j]) row = temp + str_row write_file("爬取成功的人名/new{}.csv".format(i),row) else: continue
欢迎留言交流!
转载地址:https://mtyjkh.blog.csdn.net/article/details/79762907 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月27日 08时25分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实时开发框架Meteor API解读系列<八> Timers
2019-05-03
ubuntu sublime无法输入中文问题
2019-05-03
启用fcitx-qimpanel面板程序
2019-05-03
浅谈Q的基本实现
2019-05-03
python os模块
2019-05-03
iOS8 Push Notifications
2019-05-03
iOS8 PUSH解决方法
2019-05-03
Xcode6中如何添加pch文件
2019-05-03
iOS设备控制打印机输出文本
2019-05-03
IOS 网络请求中设置cookie
2019-05-03
Subversion基础:概念、安装、配置和基本操作(转)
2019-05-03
iOS开发之──传感器使用
2019-05-03
iOS开发之多媒体API(1)
2019-05-03
[深入浅出Cocoa]iOS网络编程之Socket
2019-05-03
[Cocoa]深入浅出Cocoa之Bonjour网络编程
2019-05-03
IOS之禁用UIWebView的默认交互行为
2019-05-03
iOS开发之多媒体播放
2019-05-03
iOS开发中的单元测试(三)——URLManager中的测试用例解析
2019-05-03
IOS 单元测试
2019-05-03
[深入浅出Cocoa]iOS程序性能优化
2019-05-03