python - 禁用 CSS 时无法收集网站源代码
问题描述
感谢您查看这个问题!
我正在自学如何收集网络数据。
目标是收集城市内“booking(dot)com”列表的评论。我正在使用 requests 库来收集源代码并找到有用的数据。酒店的所有评论都不在列表的源代码中,但是我找到了一种访问某些酒店评论列表的方法,链接配方适用于所有列表。它指向“查看评论”选项卡的简化(无 CSS)版本。
问题是,用于收集源代码的函数返回一个带有评论列表链接的空列表,但适用于其他地址。查看列表链接在浏览器中“手动”打开时有效。如何解决这个问题?
In: page ='https://www.booking.com/reviewlist.html?aid=679422&cc1=lt&pagename=gradiali&rows=10&'
download = requests.get(page)
decoded_content = download.content.decode('utf-8')
page_content = decoded_content.split('\n')
page_content
Out: ['']
谢谢,K。
解决方案
解决了!发现请求功能可以将用户代理行发送到服务器,并使其“认为”网页已被浏览器打开。
page = hotels.iloc[0,1]
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
download = requests.get(page, headers=header)
decoded_content = download.content.decode('utf-8')
page_content = decoded_content.split('\n')
page_content
如果有人遇到此问题,请确保您尝试不同的用户代理,有些可以,有些不行:)
推荐阅读
- r - R:按行索引重新排序数据框行
- javascript - react-google-maps/api 在某些状态更改后避免重新渲染地图
- python - 根据逻辑更改 DataFrame 列和数据
- django-rest-framework - 使用 Vue3 从 API 中成功删除项目后,异步函数不会更新
- java - 检查外部文件是否有某个单词,如果没有,则添加它 Java
- c++ - 将四个以上的参数传递给通过使用 ARM clang 6.6 中的内联汇编编写的包装函数调用的函数
- kotlin - 在 Exposed DAO 中返回空表达式?
- javascript - 优化 webpack 构建时间
- python - 使用 Selenium 查找元素时出错
- video - 在我的 Shopify 网站中嵌入 Vimeo 视频,但音量已静音 - 如何将音量默认为“开启”?