我试图通过抓取网页来创建天气预报。(我的前任)
我的代码:
import time
import requests
from selenium import webdriver
from bs4 import BeautifulSoup
from keyboard import press_and_release
def weather_forecast2():
print('Hello, I can search up the weather for you.')
while True:
inp = input('Where shall I search? Enter a place :').capitalize()
print('Alright, checking the weather in ' + inp + '...')
URL = 'https://www.yr.no/nb'
"Search for a place"
driver = webdriver.Edge() # Open Microsoft Edge
driver.get(URL) # Goes to the HTML-page of the given URL
element = driver.find_element_by_id("søk") # Find the search input box
element.send_keys(inp) # Enter input
press_and_release('enter') # Click enter
cURL = driver.current_url # Current URL
"Find data"
driver.get(cURL) # Goes to the HTML-page that appeared after clicking button
r = requests.get(cURL) # Get request for contents of the page
print(r.content) # Outputs HTML code for the page
soup = BeautifulSoup(r.content, 'html5lib') # Parse the data with BeautifulSoup(HTML-string, HTML-parser)
我想从页面上采集温度。我知道我要找的元素的XPath是
//[@id="dailyWeatherListItem0"]/div[2]/div1/span[2]/span1/text() //[@id="dailyWeatherListItem0"]/div[2]/div1/span[2]/span[3]/text() //[@id="dailyWeatherListItem1"]/div[2]/div1/span[2]/span1/text() //[@id="dailyWeatherListItem1"]/div[2]/div1/span[2]/span[3]/text() //[@id="dailyWeatherListItem2"]/div[2]/div1/span[2]/span1/text() //[@id="dailyWeatherListItem2"]/div[2]/div1/span[2]/span[3]/text() //[@id="dailyWeatherListItem3"]/div[2]/div1/span[2]/span1/text() //[@id="dailyWeatherListItem3"]/div[2]/div1/span[2]/span[3]/text()
//etc...
基本上我想九次收集以下两个元素:
//[@id="dailyWeatherListItem{NUMBERS0-8}"]/div[2]/div1/span[2]/span1/text() //[@id="dailyWeatherListItem{NUMBER0-8}"]/div[2]/div1/span[2]/span[3]/text()
如何使用driver.find\u element\u by\u xpath来执行此操作?还是有更有效的功能
假设您可以正确地检索url,那么您可以使用该url作为referer头,以及该url中的位置id,来调用实际返回预测的API。我没有你对
press_and_release
的定义,所以测试代码时没有这个定义相关问题 更多 >
编程相关推荐