我正在尝试使用这个网站https://www.timeanddate.com/weather/使用BeautifulSoup4通过打开以下网址来抓取天气数据:

quote_page=r"https://www.timeanddate.com/weather/%s/%s/ext" %(country, place)


我仍然对网络抓取方法和BS4还是陌生的,我可以在页面源中找到所需的信息(例如,在此搜索中,我们将国家(地区)设为印度,将城市设为孟买)链接为:https://www.timeanddate.com/weather/india/mumbai/ext

如果您看到页面的来源,那么使用CTRL+F查找信息的属性并不难,例如“湿度”,“露点”和天气的当前状态(如果天气晴朗,下雨等),阻止我获取这些数据的唯一原因是我对BS4的了解。

您可以检查页面源代码并编写BS4方法以获取诸如以下信息吗?
“感觉:”,“能见度”,“露点”,“湿度”,“风”和“预报”?

注意:在必须获取<tag class="someclass">value</tag>之类的HTML标记中的值之前,我已经完成了数据抓取练习。
使用
`

a=BeautifulSoup.find(tag, attrs={'class':'someclass'})
a=a.text.strip()`

最佳答案

您可以熟悉CSS选择器

 import requests
from bs4 import BeautifulSoup as bs
country = 'india'
place = 'mumbai'
headers = {'User-Agent' : 'Mozilla/5.0',
          'Host' : 'www.timeanddate.com'}
quote_page= 'https://www.timeanddate.com/weather/{0}/{1}'.format(country, place)
res = requests.get(quote_page)
soup = bs(res.content, 'lxml')
firstItem = soup.select_one('#qlook p:nth-of-type(2)')
strings = [string for string in firstItem.stripped_strings]
feelsLike = strings[0]
print(feelsLike)
quickFacts = [item.text for item in soup.select('#qfacts p')]

for fact in quickFacts:
    print(fact)




第一个选择器#qlook p:nth-of-type(2)使用id selector指定父项,然后使用:nth-of-type CSS pseudo-class选择其中的第二个段落类型元素(p标记)。

该选择器匹配:

python - 获取一个国家的天气,放置BS4-LMLPHP

我使用stripped_strings分隔各个行,并按索引访问所需的信息。



第二个选择器#qfacts pid selector用于父元素,然后将descendant combinatorp type selector用于指定子p标签元素。该组合符合以下条件:



quickFacts代表这些匹配项的列表。您可以按索引访问项目。

关于python - 获取一个国家的天气,放置BS4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55077185/

10-12 17:45