首页新闻找找看学习计划

爬虫把数据存在excel表中

0
悬赏园豆:80 [已关闭问题] 关闭于 2018-04-03 17:08

#列表页数据
def start_html(url, headers, proxies):
try:
response = requests.get(url=url, headers=headers, proxies=proxies)
response.encoding = 'gbk'
# print(response.text)
content = etree.HTML(response.text)
# print(response.text)
all_detail_url = content.xpath('//div[@class="el"]/p/span/a/@href')
# print(all_detail_url)
if all_detail_url:
ii = 1
  for detail_url in all_detail_url:
# print(detail_url)
      ii += 1
      detail_html(detail_url, headers, proxies, ii)
else:
print('当前页面获取失败')
next_page = content.xpath('//*[@id="resultList"]/div[55]/div/div/div/ul/li[8]/a/@href')[0]
# print(next_page)
if next_page:
start_html(next_page, headers, proxies)
else:
print('end')
except Exception as e:
print(e)


#详情页数据
def detail_html(detail_url, headers, proxies, ii):
list_data = []
response = requests.get(url=detail_url, headers=headers, proxies=proxies)
# print(response.text)
response.encoding = 'gbk'
content = etree.HTML(response.text)
try:
title = content.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/h1/text()')
# print(title)
list_data.append(title)
except Exception as e:
print(e)

try:
address = content.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/span/text()')
# print(address)
list_data.append(address)
except Exception as e:
print(e)

try:
price = content.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/strong/text()')
# print(price)
list_data.append(price)
except Exception as e:
print(e)

try:
firm = content.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/p[1]/a/text()')
list_data.append(firm)
except Exception as e:
print(e)

try:
style = content.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/p[2]/text()')
list_data.append(style)
except Exception as e:
print(e)

book = xlwt.Workbook()
worksheet = book.add_sheet('sheet1', cell_overwrite_ok=False)
# print('准备将数据存入表格..')
heads = ['标题', '地址', '薪资', '公司', '简介']
for i in range(len(heads)):
worksheet.write(0, i, heads[i])
# print(ii)
  for j in range(len(list_data)):
worksheet.write(ii, j, list_data[j][0])
book.save('3.xls')
每次进入详情页时ii + 1,作为表格的行
循环所有数据的长度,作为表格的列
listdata代表所有数据
数据输出为:

[['技术支持工程师(Python软件运维)'], ['北京-海淀区'], ['6-8千/月'], ['北京普瑞亿科科技有限公司'], ['\r\n\t\t\t\t民营公司 \t\t \t\t\t\xa0\xa0|\xa0\xa050-150人 \t\t \t\t \t\t\t\xa0\xa0|\xa0\xa0仪器仪表/工业自动化 \t\t\t\t\t']]
[['云方向业务部门_Python开发工程师'], ['北京-海淀区'], ['1-1.5万/月'], ['北京思特奇信息技术股份有限公司'], ['\r\n\t\t\t\t上市公司 \t\t \t\t\t\xa0\xa0|\xa0\xa01000-5000人 \t\t \t\t \t\t\t\xa0\xa0|\xa0\xa0计算机软件,通信/电信/网络设备 \t\t\t\t\t']]
[['资深云系统后端开发工程师(Python语言)'], ['北京-朝阳区'], ['2-4万/月'], ['北京源石智影科技有限公司'], ['\r\n\t\t\t\t上市公司 \t\t \t\t\t\xa0\xa0|\xa0\xa050-150人 \t\t \t\t \t\t\t\xa0\xa0|\xa0\xa0互联网/电子商务,影视/媒体/艺术/文化传播 \t\t\t\t\t']]
[['Python数据分析师'], ['北京-朝阳区'], ['10-15万/年'], ['北京经世万方信息技术有限公司'], ['\r\n\t\t\t\t民营公司 \t\t \t\t\t\xa0\xa0|\xa0\xa050-150人 \t\t \t\t \t\t\t\xa0\xa0|\xa0\xa0计算机软件,计算机服务(系统、数据服务、维修) \t\t\t\t\t']]

存入数据为:

只能显示最后一条,用xlsxwriter做也是一样的,求解决
或者怎么能把每一次请求的所有数据存入一个大的列表

可久?的主页 可久? | 初学一级 | 园豆:45
提问于:2018-04-03 11:01
< >
分享
所有回答(1)
0

这是你循环的问题,好好看看

一剑001 | 园豆:202 (菜鸟二级) | 2018-04-23 16:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册