Python小爬虫 案例详解

本文通过Python的urllib2库演示了如何爬取百度贴吧matebook板块第100页的内容。代码中详述了构造多页URL、加载页面、提取特定内容及保存到文件的方法。此外,还提及了使用正则表达式处理复杂爬取任务及学习Scrapy爬虫框架的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python爬取网站指定内容

这里用的是python爬虫的一个包urllib2来爬取百度贴吧 http://tieba.baidu.com/f?kw=matebook&ie=utf-8&pn=100 帖子的案例。

下面的代码中有详细注释,每个方法下都有解释说明方法的用途,包括:

  • 用于测试的__main__,
  • 构造多个页面url的tieba_spider,
  • 爬取整个页面内容的loadpage,
  • 爬取页面指定内容的specialcontent,
  • 以及最后存储成文件的write_to_file。
# -*- coding: utf-8 -*-

# 引入用于爬虫的一个包urllib2
import urllib2

# 引入正则表达式的包
import re

def loadpage(url):
  '''
    对爬虫进行伪装,并爬取一个页面的所有内容
  '''
  # 浏览器的user_agent,用市面上浏览器的这个参数
  user_agent = 'Mozilla/5.0(Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50'
  header = {'User-Agent':user_agent}
  #创建访问请求
  req = urllib2.Request(url,headers = header)
  #打开指定的url
  response  = urllib2.urlopen(req)
  #读取url的内容
  result = response.read()
  return result

def specialcontent(result):
  '''
    爬取页面指定内容,如贴吧中的帖子详情
  '''
  #撰写正则表达式
  content = re.compile(r'<div class="threadlist_abs threadlist_abs_onlyline ">(.*?)</div>',re.S)
  #用正则表达式抓取指定内容
  item_list = content.findall(result)
  #将一个结果转成一个String,并汇总成一个大的String
  s = '/n'
  for i in item_list:
    s = s + str(i)
  return s
    
    
def write_to_file(file_name,txt):
  '''
    将txt文本存入到file_name文件中
  '''
  print('正在存储文件'+file_name)
  # 打开文件
  f = open(file_name,'w')
  #将结果写入文件
  f.write(txt)
  #关闭文件
  f.close()


def tieba_spider(url, begin_page,end_page):
  '''
    构造每一个页面的url
  '''
  for i in range(begin_page,end_page+1):
    #经观察,页面编码和pn=后面的数据具有规律
    pn = 50*(i - 1)
    #构造完整的页面url
    urlreq = url+str(pn) 
    #爬取该页面的内容
    result = loadpage(urlreq)
    #将结果存入文件
    file_name = str(i)+'.txt'
    content = specialcontent(result)
    write_to_file(file_name,content)
    

if __name__ == '__main__':
  '''
    输入要爬网页的url和起止页码
  '''
  #输入要爬取的一系列网页url中固定不变的部分
  url  = raw_input('Please input url:')
  #输入起始页码
  begin_page = int(raw_input('Please begin page:'))
  #输入截止页码
  end_page = int(raw_input('Please end page:'))
  #爬取一系列网页

  tieba_spider(url,begin_page,end_page)

更复杂的爬取任务可以用更复杂的正则表达式实现。另外网络爬虫框架Scrapy也是非常有用的爬虫工具,可以尝试学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值