热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3--爬取数据之911网站信息爬取

上代码:#***************************************************#这份代码用于从911网站上爬取信息#其中的IP.txt文件为我本地存

上代码:

#***************************************************
#这份代码用于从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, contents
    else:  
        return r.status_code, None

def 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


欢迎留言交流!


推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
author-avatar
忧愁幻想_824
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有