先解析首页 url
- def head_url_callback(self, response):
- soup = BeautifulSoup(response.body, "html5lib")
- dl = soup.find_all("dl", attrs={"id": "rentid_D04_01"}) # 获取各地区的 url 地址的 dl 标签
- my_as = dl[0].find_all("a") # 获取 dl 标签中所有的 a 标签,
- for my_a in my_as:
- if my_a.text == "不限": # 不限地区的,特殊处理
- self.headUrlList.append(self.baseUrl)
- self.allUrlList.append(self.baseUrl)
- continue
- if "周边" in my_a.text: # 清除周边地区的数据
- continue
- # print(my_a["href"])
- # print(my_a.text)
- self.allUrlList.append(self.baseUrl + my_a["href"])
- self.headUrlList.append(self.baseUrl + my_a["href"])
- print(self.allUrlList)
- url = self.headUrlList.pop(0)
- yield Request(url, callback=self.all_url_callback, dont_filter=True)
再解析非首页 url
这里先获取到各个地区一共有多少页,才能拼接具体的页面地址。

- 再根据头部 url 拼接其他页码的url
- ef all_url_callback(self, response): # 解析并拼接所有需要爬取的 url 地址
- soup = BeautifulSoup(response.body, "html5lib")
- div = soup.find_all("div", attrs={"id": "rentid_D10_01"}) # 获取各地区的 url 地址的 dl 标签
- span = div[0].find_all("span") # 获取 dl 标签中所有的 span 标签,
- span_text = span[0].text
- for index in range(int(span_text[1:len(span_text) - 1])):
- if index == 0:
- pass
- # self.allUrlList.append(self.baseUrl + my_a["href"])
- else:
- if self.baseUrl == response.url:
- self.allUrlList.append(response.url + "house/i3" + str(index + 1) + "/")
- continue
- self.allUrlList.append(response.url + "i3" + str(index + 1) + "/")
- if len(self.headUrlList) == 0:
- url = self.allUrlList.pop(0)
- yield Request(url, callback=self.parse, dont_filter=True)
- else:
- url = self.headUrlList.pop(0)
- yield Request(url, callback=self.all_url_callback, dont_filter=True)
(编辑:淮北站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|