批量获取股票价格

利用网页结构的相似性

爬虫的目的,是从网站中 自动化批量 提取数据。

事实上,很多网站使用 Javascript 代码来生成网页内容,你的爬虫需要正确解析 Javascript 才能获得你所看到的页面。

requests_html 库提供了一个简单的方法来处理应对情况,你只需要在 r = session.get(link) 后,增加一行 r.html.render(),重新运行代码即可。

(初次运行时需要下载一些辅助工具,请耐心等待,如果下载进度条迟迟未能出现,重新运行程序。)

from requests_html import HTMLSession
session = HTMLSession()
links = ['http://stock.finance.sina.com.cn/usstock/quotes/aapl.html',
         'http://stock.finance.sina.com.cn/usstock/quotes/msft.html',
         'http://stock.finance.sina.com.cn/usstock/quotes/bidu.html',
         'https://stock.finance.sina.com.cn/usstock/quotes/NTES.html']
for index in links:
    r = session.get(index)
    r.html.render()#需要正确解析 Javascript 才能获得你所看到的页面
    title = r.html.find('body > div.wrap.topbar > div.crumbs', first=True)
    price = r.html.find('#hqPrice', first=True)
    print(title.text, price.text)
print('\n')

输出的结果为

F:\program\python3.6.1\python.exe E:/Study/py爬虫/学习/爬虫/网易财经股票价格.py
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 璁$畻鏈� > 鑻规灉鍏徃 268.37
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 杞欢 > 寰蒋鍏徃 152.09
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 浜掕仈缃� > 鐧惧害 119.81
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 浜掕仈缃� > 缃戞槗 302.09

Process finished with exit code 0

汉字部分出现了乱码

于是我们利用

print(res.encoding)  #查看网页返回的字符集类型
print(res.apparent_encoding) #自动判断字符集类型

分别输出

gbk#网页的字符类型
GB2312#代码自动解析出来的字符类型

于是代码有

from requests_html import HTMLSession
import requests
session = HTMLSession()
links = ['http://stock.finance.sina.com.cn/usstock/quotes/aapl.html',
         'http://stock.finance.sina.com.cn/usstock/quotes/msft.html',
         'http://stock.finance.sina.com.cn/usstock/quotes/bidu.html',
         'https://stock.finance.sina.com.cn/usstock/quotes/NTES.html']
r = session.get(links[1])
print(r.encoding)  # 查看网页返回的字符集类型
print(r.apparent_encoding)  # 自动判断字符集类型

for index in links:

    r = session.get(index)
    r.html.render()
    r.encoding = r.apparent_encoding#蹦了,错误示范哈哈哈,救不回来哈哈哈了,晚安( ̄o ̄) . z Z
    title = r.html.find('body > div.wrap.topbar > div.crumbs', first=True)
    price = r.html.find('#hqPrice', first=True)
    print(title.text, price.text)
print('\n')

乱码问题没解决哈哈哈

F:\program\python3.6.1\python.exe E:/Study/py爬虫/学习/爬虫/网易财经股票价格.py
gbk
GB2312
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 璁$畻鏈� > 鑻规灉鍏徃 268.53
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 杞欢 > 寰蒋鍏徃 151.74
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 浜掕仈缃� > 鐧惧害 119.24
鏂版氮璐㈢粡 > 琛屾儏涓績 > 缇庤偂 > 浜掕仈缃� > 缃戞槗 302.45



Process finished with exit code 0

你可能感兴趣的:(py爬虫练习,python)