如何在python中从img html中刮取src

如何在python中从img html中刮取src,python,image,web-scraping,Python,Image,Web Scraping,我正试图获取img的src,但是我找到的代码返回了许多img src,但不是我想要的。我不知道我做错了什么。我正在“”上刮TripAdvisor 这是我试图从中提取的HTML片段: <div class="restaurants-detail-overview-cards-LocationOverviewCard__cardColumn--2ALwF"><h6>Placering og kontaktoplysninger</h6><span>&

我正试图获取img的src,但是我找到的代码返回了许多img src,但不是我想要的。我不知道我做错了什么。我正在“”上刮TripAdvisor

这是我试图从中提取的HTML片段:

 <div class="restaurants-detail-overview-cards-LocationOverviewCard__cardColumn--2ALwF"><h6>Placering og kontaktoplysninger</h6><span><div><span data-test-target="staticMapSnapshot" class=""><img class="restaurants-detail-overview-cards-LocationOverviewCard__mapImage--22-Al" src="https://trip-raster.citymaps.io/staticmap?scale=1&amp;zoom=15&amp;size=347x137&amp;language=da&amp;center=55.687988,12.596316&amp;markers=icon:http%3A%2F%2Fc1.tacdn.com%2F%2Fimg2%2Fmaps%2Ficons%2Fcomponent_map_pins_v1%2FR_Pin_Small.png|55.68799,12.596316"></span></div></span>
我试过:

将熊猫作为pd导入
pd.options.display.max_colwidth=200
从urllib.request导入urlopen
从bs4导入BeautifulSoup作为bs
进口稀土
web_url=”https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html"
url=urlopen(web\u url)
url\u html=url.read()
soup=bs(url\u html,'lxml')
汤。全部找到(“img”)
对于汤中的链接。查找所有('img'):
打印(link.get('src'))
返回的内容与此一致,但不是我需要的src:

https://static.tacdn.com/img2/branding/rebrand/TA_logo_secondary.svg
https://static.tacdn.com/img2/branding/rebrand/TA_logo_primary.svg 
https://static.tacdn.com/img2/branding/rebrand/TA_logo_secondary.svg
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

硒是一个解决办法,我测试了它,它的作品利克一个魅力。给你:

from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.get("https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html")
links = driver.find_elements_by_xpath("//*[@src]")
urls = []
for link in links:
    url = link.get_attribute('src')
    if '|' in url:
        urls.append(url.split('|')[1])  # saves in a list only the numbers you want i.e. 55.68799,12.596316
    print(url)
print(urls)
上述结果
['55.68799,12.596316']

如果您在此之前没有使用过
selenium
,您可以找到一个webdriver

还是在这里


您只需请求和重新请求即可完成此操作。只有src的坐标部分是基于位置的变量

import requests, re

p = re.compile(r'"coords":"(.*?)"')
r = requests.get('https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html')
coords = p.findall(r.text)[1]
src = f'https://trip-raster.citymaps.io/staticmap?scale=1&zoom=15&size=347x137&language=da&center={coords}&markers=icon:http://c1.tacdn.com//img2/maps/icons/component_map_pins_v1/R_Pin_Small.png|{coords}'
print(src)
print(coords)

如果你真的需要帮助,你至少应该告诉我们你正在使用的图书馆。。。我使用PyQuery进行网页抓取,它的工作方式就像一个字谜,感谢您的评论!只需更新文本。我现在正在使用BeautifulSoup和urllib,这是因为url中没有返回您正在查找的值。谢谢Kostas!如果它没有在url中返回,您知道如何绕过它吗?非常感谢Kostas!它工作得很好。我以前没有用过硒,所以我会检查一下。有一个愉快的周末!这对我来说非常有效!正是我需要的。谢谢你抽出时间来
import requests, re

p = re.compile(r'"coords":"(.*?)"')
r = requests.get('https://www.tripadvisor.dk/Restaurant_Review-g189541-d15804886-Reviews-The_Pescatarian-Copenhagen_Zealand.html')
coords = p.findall(r.text)[1]
src = f'https://trip-raster.citymaps.io/staticmap?scale=1&zoom=15&size=347x137&language=da&center={coords}&markers=icon:http://c1.tacdn.com//img2/maps/icons/component_map_pins_v1/R_Pin_Small.png|{coords}'
print(src)
print(coords)