python爬虫获取不到数据问题,我编写了一个爬虫,能成功运行出来,但是有些数据一直获取不到,程序并没有报错,不知道是那出了问题,希望各位能解答一下
findLink = re.compile(r'<a href="(.*?)" onclick.*?>') #图书详情链接 创建正则表达式对象,标售规则 影片详情链接的规则
findImgSrc = re.compile(r'<img src="(.*?)".*?>', re.S) #图书海报
findTitle = re.compile(r'<a.*?title="(.*?)">') #书名
findRating = re.compile(r'<span class="rating_nums">(.*?)</span>')#图书评分
findJudge = re.compile(r'<span class="pl">(\d*)人评价</span>')#评价人数
findInq = re.compile(r'<span class="inq">(.*)</span>') #概述
findBd = re.compile(r'<p class="pl">(.*?)</p>') #相关信息
#<span class="pl">\((.*?)人评价.*?
#<span class="p1">(\d*)人评价</span>
def getData(baseurl):
datalist = [] # 用于存放所有书的信息
for i in range(11): # 调用获取页面信息的函数,一共10页,根据豆瓣图书的链接规律得到
# 1、生成访问链接
#baseurl = "https://book.douban.com/top250?start="
url = baseurl + str(i * 25)
html = askURL(url) # 爬取网页函数,见第五步
# 2、解析数据
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('tr', class_='item'):
# 根据html网页可以看到每本书是一个item
item = str(item)
data = [] # 用于存放一本书的所有信息
link = re.findall(findLink, item)[0] # 通过正则表达式查找
data.append(link)
imgSrc = re.findall(findImgSrc, item)[0]
data.append(imgSrc)
titles = re.findall(findTitle, item)
if (len(titles) == 1): # 修改
ctitle = titles[0]
data.append(ctitle)
#otitle = titles[1].replace("/", "") # 消除转义字符
#data.append(otitle)
else:
data.append(titles[0])
data.append(' ')
rating = re.findall(findRating, item)[0]
data.append(rating)
judgeNum = re.findall(findJudge, item)
data.append(judgeNum)
inq = re.findall(findInq, item)
if len(inq) != 0:
inq = inq[0].replace("。", "")
data.append(inq)
else:
data.append(" ")
bd = re.findall(findBd, item)[0]
bd = re.sub('<br(\s+)?/>(\s+)?', "", bd)
bd = re.sub('/', "", bd)
data.append(bd.strip())
datalist.append(data)
return datalist
def saveData(datalist, savepath):
print("save.......")
# 1、创建workbook对象
book = xlwt.Workbook(encoding="utf-8", style_compression=0)
# 2、sheet表信息
sheet = book.add_sheet('豆瓣图书TOP250', cell_overwrite_ok=True) # 创建工作表
# 3、写入数据
col = ('图书详情链接', "图书海报", "图书书名", "图书评分", "图书评价人数", "概况", "图书相关信息")
for i in range(0,10):
sheet.write(0, i, col[i]) # 列名
break
for i in range(250):
# print("第%d条" %(i+1)) #输出语句,用来测试
data = datalist[i]
for j in range(0,10):
sheet.write(i+1, j, data[j])
break
book.save(savepath) # 保存数据表
根据您提供的代码,可能出现数据获取不到的问题有以下几个可能原因:
解决这些问题的方法包括:
希望以上解答对您有帮助!如果还有其他问题,请随时提问。
不知道你这个问题是否已经解决, 如果还没有解决的话:
又再次运行了一下,完结撒花。
针对Python爬虫无法获取全部数据的问题,可以通过以下步骤进行调试和解决:
1.检查目标网站是否存在反爬虫机制,例如IP封禁、页面渲染等问题,可以使用代理IP或浏览器模拟器等工具进行解决。
2.检查爬取数据的代码是否存在问题,例如逻辑错误、程序异常等,可以使用调试工具对代码进行逐行调试和排错。
3.针对爬虫程序无法获取全部数据的具体问题,可以考虑使用一些调试技巧和工具,例如在爬取网络数据的过程中,使用urllib库中的request对象,加入异常处理并捕获异常;使用requests库,可以设置header或者添加cookies等方法,模拟用户请求,从而获取更多的数据。
4.使用相关库和框架,例如Scrapy、Beautiful Soup等,提高程序的稳定性和可扩展性。
5.可以在爬取的过程中,将获取到的数据打印输出,方便进行信息和数据的分析和跟踪。
总之,针对Python爬虫无法获取全部数据的问题,前提是正确理解问题的本质和背后的原因,从而尝试多种方法进行调试和解决。