欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

爬取东方财富网可转债数据并清洗

程序员文章站 2022-04-07 13:58:07
2019年开始可转债进入了黄金时期,2020因为忙活毕业和读研的事一直没什么时间写一写东西,现在重新拿出来之前的代码梳理一下爬虫的思路。1、确定爬取链接,修改http headers确定爬取链接很容易,就是你要爬的是哪个网址,这个总得有个数对吧。http headers 如果不修改的话,里面会写着是python程序发送的请求,随便一个网站做一点反爬措施的话就会拦截我们的请求,所以还是要改一下headers,伪装成正常的浏览器发送的请求。2、urllib.request.Request构造...

2019年开始可转债进入了黄金时期,2020因为忙活毕业和读研的事一直没什么时间写一写东西,现在重新拿出来之前的代码梳理一下爬虫的思路。

1、确定爬取链接,修改http headers

确定爬取链接很容易,就是你要爬的是哪个网址,这个总得有个数对吧。

http headers 如果不修改的话,里面会写着是python程序发送的请求,随便一个网站做一点反爬措施的话就会拦截我们的请求,

所以还是要改一下headers,伪装成正常的浏览器发送的请求。

2、urllib.request.Request构造请求

urlopen实现对目标url的访问 该函数的返回值就是获取到的网页代码

3、解析网页

如果不解析我们只能得到一个HTTPResponse对象,内部数据拿不到

我们这里通过lxml解析。(如果没有lxml pip install lxml直接安装就可以了)

通过这么几步我们就得到了网页上的静态数据

4、保存到文件

def spider_dongfangcaifu():
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    url='http://data.eastmoney.com/kzz/'
    request1=urllib.request.Request(url=url,headers=headers)
    raw_info=urllib.request.urlopen(request1)
    soup=BeautifulSoup(raw_info, 'lxml')
    with open ('1.txt','wb') as file1:
        file1.write(str(soup).encode("GBK","ignore"))

5、正则表达式获取我们想要的数据

比如我现在想拿到这一网页中所有可转债的名字

先从文件中读出数据(这里先写到文件是为了怕多次抓取给我把ip封了)

使用正则

可转债的名字中可能含有的是 汉字 数字 字母N

因此使用正则表达式为 "SNAME":"[\u4E00-\u9FA5 0-9 N]+"

    with open ('1.txt','r') as file1:
        soup=file1.read()
    pattern = re.compile('"SNAME":"[\u4E00-\u9FA5 0-9 N]+"')
    bondname=re.findall(pattern,soup)
    print(bondname)

 

本文地址:https://blog.csdn.net/ucas_hit_xza/article/details/109922964