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

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

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

python正则表达式爬取链家租房信息_第1张图片

这一次爬虫主要也是使用了正则表达式,具体的流程框架可以参照我的另一篇博
使用正则表达式爬虫抓取猫眼电影排行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('

.*?>(.*?).*?' +'

.*?>(.*?)-.*?target="_blank">.*?' +'.*?/(.*?)/.*?/(.*?).*?' +'(.*?).*?', 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文件
python正则表达式爬取链家租房信息_第2张图片

你可能感兴趣的:(python爬虫)