Python爬虫Demo

爬取豆瓣合租房信息

#导入re模块,用于正则表达式匹配
import re
#导入requests模块,用于HTTP请求
import requests
#导入json模块,用于将字典转换为json格式
import json
#导入RequsetsException模块,用于捕获异常
from requests.exceptions import RequestException

#定义抓取HTML代码的函数,参数为HTTP请求的URL
def get_response(url):
    #捕获异常
    try:
        #添加headers信息,防止访问拒绝
        headers = {
  
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3357.400 QQBrowser/9.6.11858.400'}
        #获取响应体
        response = requests.get(url,headers)
        #使用响应体中状态码判断是否请求成功
        if response.status_code==200:
            #如果请求成功就返回响应体中的代码
            return response.text
        else:
            #如果请求失败就返回None
            return None
    except RequestException:
        #如果捕获到异常就返回None
        return None

#定义获取匹配结果函数,参数为返回的HTML代码
def get_html(html):
    #将正则表达式字符串转换为正则表达式对象
    pattern = re.compile('<tr\sclass="">.*?href="(.*?)".*?class="">(.*?)</a>.*?class="">(.*?)</a></td>.*?class="">(.*?)</td>.*?class="time">(.*?)</td>.*?</tr>',re.S)
    #将匹配结果赋值给items
    items = re.findall(pattern,html)
    #items此时是一个list(列表),每个列表中包含的是元祖,需要遍历将每组信息规范
    for item in items:
        #将每个元祖转换为生成器并返回,yield会自动将结果返回给调用者
        yield {
  
  "URL":item[0],
            "title":item[1],
            "ID":item[2],
            "回帖数":item[3],
            "date":item[4]}

#定义写入文件函数,参数为正则表达式匹配出的字典格式(dict)
def write_file(item):
    #以append方式追加写入文件,且指定编码格式
    with open("file.txt", 'a', encoding='utf-8')as f:
        #将字典(dict)格式转换为json格式(json.dumps()函数转换),写入文件。'ensure_ascii=False'意为不使用ascii编码</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值