我的代码:
def get_websites():
for yso in Company.objects.filter(crawled=False, source='YAG'):
r = requests.get(yso.url)
soup = BeautifulSoup(r.content, 'lxml')
if soup.select_one(".g-recaptcha") != None:
sys.exit("Captcha")
soup_select = soup.select_one("a[href*='biz_redir']")
try:
yso.website = soup_select.text
print('website for %s added' % (yso.website))
except Exception as e:
print(e)
print('no website for %s added' % yso.name)
if not yso.crawled:
yso.crawled = True
yso.save()
在CSS选择器soup.select_one("a[href*='biz_redir']")
中使用lxml
和html.parser
返回None
,同时soup.select("a[href*='biz_redir']")
为空列表soup.find_all("a[href*='biz_redir']")
为空列表
lxml version 4.5.0
beautifulsoup version 4.9.3
编辑:将"a[href*='biz_redir']"
更改为a
会产生相同的结果。如果语法是错误的,那么还有比语法更根本的错误
数据是动态加载的,因此
requests
不支持它。但是,该链接是通过网站上的JSON格式加载的,您可以使用json
模块进行提取另一种方法是使用Selenium来刮取支持动态内容的页面
安装时使用:
pip install selenium
从here下载正确的ChromeDriver
输出:
相关问题 更多 >
编程相关推荐