我是编写网络爬虫的新手。我想使用http://www.creditchina.gov.cn/search_all#keyword=&searchtype=0&templateId=&creditType=&areas=&objectType=2&page=1的搜索引擎来检查我的输入是否有效。
例如,912101127157655762是有效输入,912101127157655760无效。
在从开发人员工具中观察Web源代码后,我发现,如果输入的数字无效,那么标签将是:
如果输入有效,则标记为:
所以我想通过检查'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的值总是[]。我无法理解为什么标签之间没有任何内容。希望有人可以帮我解决问题。
答案 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