刮网基础

2024-09-28 01:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着从市场上得到土耳其股票的市值投资网站. 这是我的密码:

import requests
from bs4 import BeautifulSoup

url = "https://tr.investing.com/equities/turkey"
heads = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = requests.get(url, headers=heads)
html_icerigi = response.text
soup = BeautifulSoup(html_icerigi, "html.parser")
stock= soup.find_all("td",{"class":"bold left noWrap elp plusIconTd"})
value=soup.find_all("td",{"class":"pid-19260-last"})
stocks= []
i=1
for stock1,value1 in zip(stock,value):
stocks.append(["{}: ".format(i) + stock1.text.strip()+"-->"+value1.text.strip()])
i+=1
list(stocks)

问题是我想要汤所有“类”:“pid-***-last”。我怎么能得到这个?你知道吗


Tags: textimporturlresponsehtmlstockallfind
2条回答

您可以使用CSS选择器。我使用adjacent sibling combinator (+)来确保通过其位置获得last值。这将比正则表达式通过HTML的方式更快。你知道吗

import requests
from bs4 import BeautifulSoup

url = "https://tr.investing.com/equities/turkey"
heads = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = requests.get(url, headers=heads)
html_icerigi = response.text
soup = BeautifulSoup(html_icerigi, "html.parser")
items = [item.text for item in soup.select('.bold.left.noWrap.elp.plusIconTd')]
values = [value.text for value in soup.select("#cross_rate_markets_stocks_1 .bold.left.noWrap.elp.plusIconTd + td")]
stocks = list(zip(items,values))

使用重新编译你知道吗

import re
value = soup.find_all("td", class_=re.compile("pid-.+-last"))

你知道吗重新编译与类一起使用允许您传入正则表达式作为类名。这个正则表达式表示将类与字面上的“pid-”加上任意数量的通配符再加上字面上的“-last”匹配。你知道吗

https://regex101.com

相关问题 更多 >

    热门问题