Python中的Web Scraping

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的Web Scraping相关的知识,希望对你有一定的参考价值。

以下代码输出空列表;我希望它能打印股票价格。任何帮助将不胜感激。谢谢!

import urllib.request
import re
companyList = ["aapl","goog","nflx"]
for i in range(len(companyList)):

    url = "https://finance.yahoo.com/quote/"+companyList[i]+"?p="+companyList[i]
    htmlfile = urllib.request.urlopen(url)
    htmltext = htmlfile.read()
    regex = '<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="35"><!-- react-text: 36 -->()(.+?)<!-- /react-text --></span>'
    pattern = re.compile(regex)
    price = re.findall(pattern, str(htmltext))
    print(price)
答案

我会为其中一家公司做的。但我希望你坚定地承诺,你不会告诉任何人我已经告诉你如何去做。

获取页面的HTML副本并将其保存在本地。

>>> import urllib.request
>>> import re
>>> url = 'https://finance.yahoo.com/quote/AAPL/?p=AAPL'
>>> htmlfile = urllib.request.urlopen(url)
>>> htmltext = htmlfile.read()
>>> open('temp.htm', 'w').write(str(htmltext))
533900

检查页面,然后在此页面和类似页面中复制粘贴您希望能够识别的项目。把它放在评论中以供参考。

>>> # <span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="35"><!-- react-text: 36 -->161.38<

将它保存在变量中,比如exp

>>> exp = '<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="35"><!-- react-text: 36 -->161.38<'

确认字符串中没有多个空白字符。如果有,则用 s +替换整个空白字符串

>>> exp.find('  ')
-1

使用单个“”字符为字符串中对正则表达式有意义的每个字符添加前缀。

>>> re.sub(r'[().]', lambda m: '\'+m.group(), exp)
'<span class="Trsdu\(0\.3s\) Fw\(b\) Fz\(36px\) Mb\(-4px\) D\(ib\)" data-reactid="35"><!-- react-text: 36 -->161\.38<'

显示结果并检查它。

>>> regex = '<span class="Trsdu\(0\.3s\) Fw\(b\) Fz\(36px\) Mb\(-4px\) D\(ib\)" data-reactid="35"><!-- react-text: 36 -->([^<]+)<'

使用正则表达式查找目标项。

>>> re.findall(regex, str(htmltext))
['161.38']
另一答案

看看下面的脚本是否有帮助。这也包括身份验证。

    https://github.com/PraveenKandregula/JenkinsRSSScrappingWithPython/blob/master/JenkinsRSSScrappingWithPython.py

以上是关于Python中的Web Scraping的主要内容,如果未能解决你的问题,请参考以下文章

python 中的 Web Scraping:BS、selenium 和 None 错误

此代码用于使用 python 返回 None 的 Web Scraping。为啥?任何帮助,将不胜感激

Python的基本Web Scraping(Beautifulsoup和Requests)

Web Scraping 代码中的 JSON 错误,如何修复?

无法在 CSV 中存储信息(Python Web Scraping)

使用 Python 和 asyncio 进行 Web Scraping