gpt4 book ai didi

python - 网页抓取Python

转载 作者:行者123 更新时间:2023-12-01 05:14:24 25 4
gpt4 key购买 nike

我一直在尝试使用此代码来提取网址,但无法获取 html 中显示的谷歌地图网址。当我尝试在此段中查找 url 时,它返回“无”。

import urllib
from bs4 import BeautifulSoup
from urllib.parse import urlparse
from urllib.request import urlopen
url="http://www.example.com"
html=urlopen(url)
soup=BeautifulSoup(html)
for tag in soup.findAll('a',href=True):
print(tag['href'])



<div class="map_container">
<div id="map_canvas" style="width: 100%; height: 450px; margin-top: 10px; position: relative; background-color: rgb(229, 227, 223); overflow: hidden; -webkit- transform: translateZ(0px);">
<div class="gm-style" style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0;">
<div style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0;">...</div>
<div style="margin-left: 5px; margin-right: 5px; z-index: 1000000; position: absolute; left: 0px; bottom: 0px;">
<a target="_blank" href="http://maps.google.com/mapsll=28.535959,77.146119&amp;z=14&amp;t=m&amp;hl=en&amp;gl=US&amp;mapclient=apiv3" title="Click to see this area on Google Maps" style="position: static; overflow: visible; float: none; display: inline;">
<div style="width: 62px; height: 26px; cursor: pointer;">...</div>
</a>
</div>
</div>
</div>
</div>

最佳答案

这里的问题是,这个 maps.google.com 链接是 div 的一部分,其 id="map_canvas" 是使用 javascript 构建。 urllib(或urllib2)加载带有空map_canvas div的页面:

>>> import urllib2
>>> from bs4 import BeautifulSoup
>>> url = "http://www.zomato.com/ncr/monkey-bar-vasant-kunj-delhi/maps#tabtop"
>>> doc = BeautifulSoup(urllib2.urlopen(url))
>>> print doc.find('div', id='map_canvas')
<div id="map_canvas" style="width:100%; height:450px; margin-top: 10px;"></div>

这意味着您无法使用您现在使用的工具轻松获取链接。

另一种解决方案是使用 selenium :

>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> browser.get(url)
>>> link = browser.find_element_by_xpath('//div[@id="map_canvas"]//a')
>>> link.get_attribute('href')
u'http://maps.google.com/maps?ll=28.536562,77.147664&z=14&t=m&hl=en&gl=US&mapclient=apiv3'

关于python - 网页抓取Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com