当前位置: 代码迷 >> 综合 >> urllib 爬虫示例
  详细解决方案

urllib 爬虫示例

热度:52   发布时间:2023-12-06 05:19:47.0

爬虫爬取糗事百科的段子

#coding=utf8
import urllib.request
import re
import os#爬取糗事百科。
#定义爬取第几页
page = 1  #http请求的一个参数,如果没有网站服务器可能不会允许你访问
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'#要爬取的url地址
url = 'http://www.qiushibaike.com/hot/page/' + str(page)#这是http请求header头字典
headers = { 'User-Agent' : user_agent }#发送http请求返回response对象
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request)#获取返回的html内容并进行utf-8编码(这个html页面是最原始的页面不是ajax异步请求后的页面)
html = response.read().decode('utf8')#匹配正则表达式。这里的问号是关键非贪婪模式
pattern = re.compile('[\s\S]*?\n*(.*?)\n*\n*')
#array = re.findiall(pattern,html)
#此函数返回string中所有与pattern相匹配的全部字串,返回形式为迭代器。
array = re.finditer(pattern,html)#写入文件
file = open("糗事百科.txt","a")
for a in array:#print(a.groups())#区别一下group与groups#print(a.group(1))#不传参默认返回源字符串。#在正则表达式中一个小括号围起来的算一个分组file.write(a.group(1))file.write('\n\n')
print("写入完毕")

 

 

抓取百度贴吧内容

url = input("请输入要抓取的贴吧地址:")#请求url获得html内容
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
html = response.read().decode('utf8')
print(html)#获取贴吧的话题。
pattern = re.compile('<h3\s*class="core_title_txt.*?>(.*?)</h3>')
result = re.search(pattern,html)#只搜索一次搜到即结束
print("贴吧话题:  ")
print(result.group(1))
print("--------------------------------------------------------\n")#获取内容
#下面的最后一个问号很关键。
pattern = re.compile('<div[\s\S]*?class="d_post_content j_d_post_content "\s*>([\s\S]*?)
(<img[\s\S]*?|<a[\s\S]*?)?</div>'+
'[\s\S]*?(<ul\s*class="j_lzl_m_w"[\s\S]*?>([\s\S]*?)</ul>)?' )result = re.finditer(pattern,html)
floor = 1
for a in result:print(floor,"楼:")print(a.group(1))print("---------------------------------------------------------\n")floor=floor+1
  相关解决方案