爬取东方财富网可转债数据并清洗
程序员文章站
2024-01-11 08:43:16
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
上一篇: 连接的正常终结简析
推荐阅读