python-3.x - 使用 BeautifulSoup 提交按钮/展开 aria-expandable
问题描述
您好我正在尝试扩展此页面上的按钮以使用漂亮的汤来捕获剩余的属性。这是我要按下的按钮的 html:
<button class="button__373c0__3lYgT secondary__373c0__1bsQo" aria-expanded="false" aria-controls="expander-link-content-cf6b4b45-8720-4627-96f8-397a766b8ddb" type="submit" value="submit" style="--mousedown-x:30px; --mousedown-y:27.625px; --button-width:113.422px;"><div class=" button-content__373c0__1QNtB border-color--default__373c0__3-ifU"><span class=" text__373c0__2Kxyz button-content-text__373c0__Z-7FO text-color--inherit__373c0__1lczC text-align--center__373c0__3VrfZ text-weight--semibold__373c0__2l0fe text-size--large__373c0__3t60B text--truncated__373c0__3sLaf"><p class=" text__373c0__2Kxyz text-color--normal__373c0__3xep9 text-align--left__373c0__2XGa- text-weight--semibold__373c0__2l0fe text-size--large__373c0__3t60B">15 More Attributes</p></span></div></button>
这就是我到目前为止所拥有的:
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9'}
url = 'https://www.yelp.com/biz/lazi-cow-davis?osq=lazi+cow'
response = requests.get(url, headers=headers)
sub_response = requests.get(sub_url, headers=headers)
sub_soup = BeautifulSoup(sub_response.content, 'lxml')
for item in sub_soup.select('section'):
if item.find('h4'):
name = item.find('h4').get_text()
if name == "Amenities and More":
tests = item.find_all('span')
for span in tests:
print(span.get_text())
我知道您可以使用 Yelp API 进行抓取,但我需要使用 +1000 个不同的 yelp 站点来执行此操作,所以我想知道是否有解决方法,因为我目前的方法有效(稍后我将添加代理),只是没有对于所有属性
解决方案
您可以尝试使用 Selenium:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome('/Users/Downloads/chromedriver')
driver.implicitly_wait(30)
driver.find_element_by_xpath("//button[@class='button__373c0__3lYgT secondary__373c0__1bsQo activated__373c0__1moG8 ']").click()
for x in driver.find_elements_by_xpath("//div[@class=' arrange__373c0__2C9bH gutter-2__373c0__1DiLQ vertical-align-baseline__373c0__3HGi9 border-color--default__373c0__3-ifU']"):
print(x.text)
告诉我这是否有帮助。
推荐阅读
- javascript - 如何单击带有 chrome 扩展名的这种按钮(给定的 DOM)?
- c++ - 使用文件锁的进程之间的条件变量
- go - 如何扫描十进制值?
- java - 为什么大十进制会附加更多的十进制值
- php - 如何使用 PHP 将多个值和多行从 textarea 插入 MySQL?
- c# - 如何确定列表项C#上是否有空值
- android - 对话框中的 AutocompleteSearchFragment 给出 InflateException
- vb.net - 使用 OleDBCommand 将数据插入 Access 数据库,但表显示 -1 作为结果
- java - int 方法如何返回 char
- python - 有没有办法用 matplotlib 绘制一个 3d 笛卡尔坐标系?