Python自学第五天:一级页面换页+二级页面获取内容,并入Excel(实例代码)

此博客介绍了使用Python爬虫技术抓取湖北招标网的数据,并通过lxml库解析HTML,存储到Excel中。作者展示了如何翻页、定位链接、提取表格内容,以及如何组织数据以便于后续分析。
import requests
from lxml import etree
import xlwt

# 为了方便翻页将网址代码分成两部分
urlstart = 'http://www.hubeibidding.com/list/33.html?page='
# 二级页面网址代码分成两部分
urlfirst = 'http://www.hubeibidding.com'


#创建一个workbook设置编码
workbook = xlwt.Workbook(encoding = 'UTF-8')
#创建一个worksheet
worksheet = workbook.add_sheet('hubeichengtao')

#定义个空list,用来储存内容
row = []

# 爬取数据总页数170,本次只到10页
for n in range(2, 11):
    # 组合页面URL,用来翻页
    URL = urlstart + str(n) 
    # 获取页面
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
    res = requests.get(URL,headers = headers)

    
    #设置内容配置
    res.encoding = 'UTF-8'
    html = res.content.decode('UTF-8')  
    e_html = etree.HTML(html)
  
    
    #定位获取超链接
    urlend = e_html.xpath(' //div[@class="dynamic_content_center"]/a/@href')
   #组合超链接
    for x in urlend:
      url2 = urlfirst+x
      print(url2)
      #设置获取的网页内容配置
      res2 = requests.get(url2,headers = headers)
    
      #设置获取的网页内容配置
      res2.encoding = 'UTF-8'
      html2 = res2.content.decode('UTF-8')  
      e_html2 = etree.HTML(html2)
     
      #点位获取内容
      cont14 = e_html2.xpath(' //div[@class="news_details_content"]/div/table/tbody/tr[14]/td/text()')
     #获取内容,插入list
      row.append(cont14)
      #点位获取内容
      cont15 = e_html2.xpath(' //div[@class="news_details_content"]/div/table/tbody/tr[15]/td/text()')
      #获取内容,插入list
      row.append(cont15)
      #点位获取内容 
      cont16 = e_html2.xpath(' //div[@class="news_details_content"]/div/table/tbody/tr[16]/td/text()')
      #获取内容,插入list
      row.append(cont16)
      #点位获取内容 
      cont17 = e_html2.xpath(' //div[@class="news_details_content"]/div/table/tbody/tr[17]/td/text()')
      #获取内容,插入list
      row.append(cont17)
#把list row写进Excel
#定义行数
i = 1
for j in range(len(row)):
    t = j%4
    #换行判断
    if t == 0 :
        i = i+1
    #worksheet.write(行数,列数,内容)
    worksheet.write(i,t,row[j])   
        
#保存
workbook.save('Desktop/市场拓展/hubeict_test.xls')
print("ok")

注意事项:
一、代码复制后,需要把中文的‘’改为英文格式
二、注意代码对齐

其他技巧:
1、目标网页path获取:每一个目标都要定位

2、for in
for in 说明:也是循环结构的一种,经常用于遍历字符串、列表,元组,字典等。
3、目标网页格式

4、注意str和list的区别
可使用print(type(obj))来展示
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值