python正则表达式爬取链家租房信息

python正则表达式爬取链家租房信息

网址: https://bj.lianjia.com/zufang/  

北京链家网租房信息

这一次爬虫主要也是使用了正则表达式,具体的流程框架可以参照我的另一篇博
使用正则表达式爬虫抓取猫眼电影排行Top100
其中找正则表达式一定要找准,一定要找到唯一匹配的正则表达式。
还有爬取链家网必须要添加headers
在这里插入图片描述

具体代码

import requests
import re
from requests.exceptions import RequestException
import json
import csv
from time import sleep

# 抓取单页内容
def get_one_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    try:
        response = requests.get(url,headers=headers)
        response.encoding='utf-8'
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

# 使用正则表达式解析网页
def parse_one_page(html):
    pattern = re.compile('<p class="content__list--item--title twoline">.*?>(.*?)</a>.*?'
                         +'<p class="content__list--item--des">.*?>(.*?)</a>-.*?target="_blank">.*?</a>'
                         +'.*?<i>/</i>(.*?)<i>/</i>.*?<i>/</i>(.*?)<span class="hide">.*?<span class="content__list--item-price">'
                         +'<em>(.*?)</em>.*?</span>', re.S)
    items = re.findall(pattern,html)
    for item in items:
        yield {
            '小区名称': item[0].strip(),
            '地区': item[1],
            '面积': item[2].strip(),
            '户型': item[3].strip(),
            '价格(元/月)': item[4]
        }



# 写入并保存至文件
# 保存为txt格式
def write_to_file(content):
    with open('lianjiazufang.txt','a',encoding='utf-8') as f:
        f.write(json.dumps(content,ensure_ascii=False)+'\n')
        f.close()

# 保存为csv格式
# def write_to_file(content):
#     with open('result.csv', 'a') as csvfile:
#         fieldnames = ['小区名称','地区','面积','户型','价格(元/月)']
#         writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
#         writer.writeheader()
#         # writer = csv.writer(csvfile)
#         writer.writerow(content)
#         csvfile.close()


# 定义主函数
def main(num):
    url = 'https://bj.lianjia.com/zufang/pg'+str(num)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)

if __name__ == '__main__':
    for i in range(100):
        sleep(1)
        print(i)
        main(i)



结果演示

可以保存成txt文本也可以生成csv文件
在这里插入图片描述

发布了31 篇原创文章 · 获赞 90 · 访问量 9961

猜你喜欢

转载自blog.csdn.net/Jarrodche/article/details/95090099