在网站阻止内容不被抓取的情况下,如何在Python中抓取?

时间:2020-03-05 08:54:06

标签: python web-scraping beautifulsoup web-crawler

我是Python的初学者,并尝试使用BeautifulSoup进行爬网。并尝试抓取一个网站来收集产品信息。

pr_url = soup.findAll("li", {"class", "_3FUicfNemK"})
pr_url

与使用BeautifulSoup进行的其他爬网代码完全相同。 但是,即使我写下正确的组件,问题也没解决。

所以我认为是主机阻止了产品区域,使其不被抓取。 因为该区域以外的每个元素都是可爬网的。

您知道如何抓取这个受阻区域吗? 网站网址是: https://shopping.naver.com/living/homeliving/category?menu=10004487&sort=POPULARITY

谢谢您的评论!

1 个答案:

答案 0 :(得分:1)

请注意,当您第一次加载页面时,如何加载网站的轮廓,但是加载产品要花一些时间?这是因为该站点正在请求将其余内容加载到后台。此内容未被阻止,稍后只需加载即可:)

这里有2个选项...

1)找出后台请求,并将其传递给beautifulsoup。使用Chrome开发者工具的“网络”标签,我可以看到对产品的要求是...

https://shopping.naver.com/v1/products?nc=1583366400000&subVertical=HOME_LIVING&page=1&pageSize=10&sort=POPULARITY&filter=ALL&displayType=CATEGORY_HOME&includeZzim=true&includeViewCount=true&includeStoreCardInfo=true&includeStockQuantity=false&includeBrandInfo=false&includeBrandLogoImage=false&includeRepresentativeReview=false&includeListCardAttribute=false&includeRanking=false&includeRankingByMenus=false&includeStoreCategoryName=false&menuId=10004487&standardSizeKeys=&standardColorKeys=&attributeValueIds=&attributeValueIdsAll=&certifications=&menuIds=&includeStoreInfoWithHighRatingReview=false

应该能够在这里猜测对查询字符串的调整并使用它。

2)使用Selenium之类的工具与浏览器进行交互,并将为您执行任何JavaScript,因此您不必弄清这方面的情况。如果您是新手,那么这里的网络技术学习曲线可能会更少。