Python爬虫实战--小猪短租爬虫

前言:
通过上次的TripAdvisor爬虫实战,我们学会了如何使用requests发送一个网页请求,并使用BeautifulSoup来解析页面,从中提取出我们的目标内容,并将其存入文档中。同时我们也学会了如何分析页面,并提取出关键数据。
下面我们将进一步学习,并爬去小猪短租的详情页面,提取数据。
Just do it~~!
目标站点分析
目标URL:http://bj.xiaozhu.com/search-duanzufang-p1-0/
明确内容:
在这里插入图片描述
在点击URL后我们进入了列表页面,在列表页面没有我们想要的信息,我们需要进入详情页面,看有没有我们所需要的数据。
在这里插入图片描述
在详情页面中,我们找的了我们需要的数据:如title,address,price,host_name,host_gender等(红色方框中的内容),当然我们也可以提取详情页中的图片,居住人数等,这就当个小练习,交给大家实现吧~
下面我们需要遍历所有的列表页面,提取所有的详情页面URL,再提取详情页中的目标数据。
业务逻辑:
1.查找规律,遍历所有的列表页,再下翻几页后,我们发现***pX***(其中X为1,2,3,4…)
在这里插入图片描述

2.提取列表页中的详情页URL

# 解析列表页面,并提取详情页的URL
    def parse_html(self, html):
        soup = BeautifulSoup(html, 'lxml')
        lis = soup.select("div#page_list > ul > li")
        for li in lis:
            # 提取详情页URL
            page_url = li.select("a")[0].attrs['href']

3.提取详情页的数据

# 解析详情页,并提取数据
    def parse_page(self, html):
        item_list = []
        soup = BeautifulSoup(html, 'lxml')
        temp_title = soup.select('div.pho_info > h4')[0].get_text()
        title = temp_title.replace('\n', '')
        address = soup.select("div.pho_info > p")[0].get('title')
        price = soup.select("div.day_l > span")[0].get_text()
        host_name = soup.select("a.lorder_name")[0].get_text()
        host_gender = soup.select("div.member_pic > div")[0].get('class')[0]

4.保存数据,并放入文档中

# 保存数据
    def save_item(self, item_list):
        with open('XiaoZhu.txt', 'a+', encoding='utf-8') as f:
            for item in item_list:
                json.dump(item, f, ensure_ascii=False, indent=2)
            f.close()
        print("Save success!")

结果展示
在这里插入图片描述
好了,本次讲解,到这里就差不多该结束啦~感兴趣的同学,可以动手试试。
源码地址:https://github.com/NO1117/XiaoZhu_Spider
Python交流群:942913325 欢迎大家一起交流学习

猜你喜欢

转载自blog.csdn.net/m0_37903789/article/details/84075756