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

2022-07-27,,

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

《爬取东方财富网可转债数据并清洗.doc》

下载本文的Word格式文档,以方便收藏与打印。