BeautifulSoup在标签之间什么也得不到

时间:2017-10-10 07:57:24

标签: html python-3.x beautifulsoup web-crawler urllib

我是编写网络爬虫的新手。我想使用http://www.creditchina.gov.cn/search_all#keyword=&searchtype=0&templateId=&creditType=&areas=&objectType=2&page=1的搜索引擎来检查我的输入是否有效。

例如,912101127157655762是有效输入,912101127157655760无效。

在从开发人员工具中观察Web源代码后,我发现,如果输入的数字无效,那么标签将是: enter image description here

如果输入有效,则标记为:

enter image description here 所以我想通过检查'ul class =“credit-info-results public-results-left item-template”'标签中是否有任何内容来确定输入是否有效。以下是我编写网络抓取工具的方法:

import urllib
from bs4 import BeautifulSoup
url = 'http://www.creditchina.gov.cn/search_all#keyword=912101127157655762&searchtype=0&
templateId=&creditType=&areas=&objectType=2&page=1'
req = urllib.request.Request(url)
data = urllib.request.urlopen(req)
bs = data.read().decode('utf-8')
soup = BeautifulSoup(bs, 'lxml')
check = soup.find_all("ul", {"class": "credit-info-results public-results-left item-template"})
if check == []:
    # TODO
if check != []:
    # TODO

但是,check的值总是[]。我无法理解为什么标签之间没有任何内容。希望有人可以帮我解决问题。

1 个答案:

答案 0 :(得分:0)

你没有html,但JS对象作为回应。这就是BS无法解析它的原因。

您可以使用子字符串搜索来检查响应是否包含某些内容。

import urllib
from bs4 import BeautifulSoup
url = 'http://www.creditchina.gov.cn/search_all#keyword=912101127157655762&searchtype=0&
templateId=&creditType=&areas=&objectType=2&page=1'
req = urllib.request.Request(url)
data = urllib.request.urlopen(req)
bs = data.read().decode('utf-8')

ul_pos = bs.find('credit-info-results public-results-left item-template')
if ul_pos <> 0:
  bs = bs[ul_pos:]

soup = BeautifulSoup(bs, 'lxml')
check = soup.find_all("ul", {"class": "credit-info-results public-results-left item-template"})
if check == []:
    # TODO
if check != []:
    # TODO