Python3--爬取数据之911网站信息爬取
上代码:
#***************************************************
#这份代码用于从911网站上爬取信息
#其中的IP.txt文件为我本地存IP的文件
#
#***************************************************import requests,csv
import pandas as pd
import time,random
from bs4 import BeautifulSoup
from 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, contentselse: 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+namesMeaningreturn 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_rowtemp = []temp.append(names[j])row = temp + str_rowwrite_file("爬取成功的人名/new{}.csv".format(i),row) else:continue
欢迎留言交流!
Python3--爬取数据之911网站信息爬取相关推荐
- 基于scrapy+mongodb的智联招聘网站信息爬取
本篇内容主要记录博主本人爬取智联招聘网站信息的过程!! 环境:python 3.6.5 pycharm JetBrains PyCharm Community Edition 2018.1 x64 M ...
- python3爬虫----人人贷散标用户信息爬取
前提 本文基于此篇博文的实现思路以及给出的代码.不得不说,此博主心真的细,这个数据隐藏点都找到了,从而使得此爬虫的实现简单许多. 但我在使用博主代码时,发现人人贷网站有些许改变,于是对应代码我也相应做 ...
- python爬虫 京东,苏宁,小米众筹网站信息爬取
可代写python爬虫,收费可协商,用途需提前说明. 下面爬虫爬到的数据有100天左右,100家众筹的完整数据,需要的或者有写爬虫需求的同学可发邮件至starinsunriseabovesea@ali ...
- 第10课:利用Headers 的 cookie,实现爬取需要登录的网站信息
本节课目录: Cookie 的概念: 网站 Cookie 的获取方法 : Cookie 访问登录网站演示: 实战演习: Cookie 安全: 本节课总结: Cookie 的概念: Cookie 是储存 ...
- python爬实时数据_如何用python爬取实时更新的动态数据?
爬虫实时更新 互联网是绝对豪爽的数据源.不幸的是,倘若没有轻易构制的CSV文献可供下载和说明,则绝大部门.倘若要从很众网站拘捕数据,则必要测验举办收集抓取. 倘若您照样一个初学者,请不要忧愁-正在数据 ...
- 如何用python爬微博数据_怎样用python爬新浪微博大V所有数据?
最近为了做事件分析写了一些微博的爬虫,两个大V总共爬了超70W的微博数据. 官方提供的api有爬取数量上限2000,想爬取的数据大了就不够用了... 果断撸起袖子自己动手!先简单说一下我的思路: 一. ...
- 用python爬微博数据_怎样用python爬新浪微博大V所有数据?
最近为了做事件分析写了一些微博的爬虫,两个大V总共爬了超70W的微博数据. 官方提供的api有爬取数量上限2000,想爬取的数据大了就不够用了... 果断撸起袖子自己动手!先简单说一下我的思路: 一. ...
- 如何用python爬取图片数据_如何用python爬取图片
都知道Python的语法很简单易上手,也很适合拿来做爬虫等等,这里就简单讲解一下爬虫入门--简单地爬取下载网站图片. 代码: 其实很简单,我们直接看下整体的代码:#coding = utf-8 imp ...
- python爬虫抓取数据的步骤-Python爬虫抓取手机APP的传输数据
大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 得到超级课程表登录的地址:http://120.55 ...
最新文章
- [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
- java获取当前时间前一周、前一月、前一年的时间
- 哪一个不是html5新增的语义化标记元素,东师19春《HTML5开发基础与应用》作业考核【标准答案】...
- 在ASP.NET页面中实现数据柱状图
- Redis 16 大应用场景,竟然这么多。。
- Vue是如何渲染页面的,渲染过程以及原理代码
- 美团字节滴滴重启支付大战,王兴张一鸣不甘心
- 基于jQuery的表单验证插件:jValidate
- MySQL 下载与配置教程(免安装版)
- 3D打印材料PLA,ABS对比
- php接收base64图片并保存
- win7如何删除mariadb
- 取消管理员取得所有权_win7下取得管理员所有权的技巧
- Cartopy理解变换和投影关键字
- 2018辽大计算机拟录取,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...
- Guide to Elliptic Curve Cryptography (ECC椭圆曲线算法1)
- 路由及路由器工作原理深入解析1:概述
- 数学计算机教学课题,《运用信息技术,优化数学课堂教学》课题方案.doc
- c语言延时时间计算器,RC延时电路延时时间计算
- 一种融合CMMI和敏捷的策略的前进路线
热门文章
- SerialPort.DataReceived 事件
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
- Acwing756. 蛇形矩阵:模拟
- GRE核心词汇助记与精练-List9切分、部分
- c++基础知识——算数运算符
- visual studio 代码提示插件_请收好:10 个实用的 VS Code 插件
- apache tomcat下32还是64_JDK和Tomcat安装和配置的图文教程
- 主窗体界面设计及功能实现
- mysql复制架构迁移到pxc_mysql复制(高可用架构方案的基础)
- a eraser eraser还是an_eraser前面用a还是an