python - 如何使用 soup.find_all() 提供以 sometext 开头的 attrs
问题描述
我试图抓取这个网站,[在此处输入链接描述][1]
[1]: https://beta.sam.gov/search?keywords=&sort=-modifiedDate&index=opp&is_active=true&page=1我要抓取的所有数据都将插入到一个 div 中,该 div 的类每次都获得动态值。wo 我想使用 soup.find_all() 找到所有这些 div 并为其类提供起始字符串。
这是我当前的代码,
outerDivs = soup.find_all(attrs={"tabindex": "-1", "class": "ng-tns-c1-1 ng-star-inserted"})
我想要得到的是 find_all() 具有属性 tabindex=1 的 div 并且类以ng-tns-...
ng-star-inserted
. 唯一改变的值是ng-tns
……现在看起来ng-tns-c294-1 ng-star-inserted
请注意ng-star-inserted
总是保持不变。
这就是我获得汤代码的方式。
driver.get(
f'https://beta.sam.gov/search?keywords=&sort=-modifiedDate&index=opp&is_active=true&page={currentpage}')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div#search-results")))
source = driver.page_source
soup = BeautifulSoup(source, 'lxml')
当前页每次加一进入下一页
解决方案
我不是最好的正则表达式,所以可能有更好的方法来做到这一点,但这应该可以解决问题:
soup.find_all(attrs={"tabindex": "-1", "class": re.compile("^ng-tns.*ng-star-inserted$")})
它只会匹配一个以“ng-tns”开头的类,具有任意数量的字符,然后专门以“ng-star-inserted”结尾。
推荐阅读
- javascript - 使用 React 创建了一个测验,尝试创建书签系统,用户可以在其中为测验中的问题添加书签
- google-apps-script - 如何将数据标签添加到由谷歌应用脚本创建的图表
- javascript - 如何将样式 bgcolor 映射为 3 部分颜色到所有部分
- mongodb - 几天后mongodb数据库,突然自动删除了?
- android - 在 Android Studio 中,如何更改 CalendarView 中月份和年份的颜色?
- r - 矩阵for循环上的下标数量不正确
- javascript - 是否可以在 HTML 实体之后编写 XSS 字符串?
- java - Java 无法使用我的正则表达式,在线编辑器可以
- javascript - javascript数组中的深度过滤对象
- javascript - 使用 AJAX 查询。PHP(代码点火器)