Advertisement

爬取北京链家二手房(requests和selenium)

阅读量:

从网页源码中可以看出这是静态网页,可以直接从源代码里拿数据,先用requests,在用BeautifulSoup解析,最后通过查找获取数据

复制代码
 import requests

    
 from bs4 import BeautifulSoup
    
  
    
 def get_li():
    
     re=requests.get(url,headers=headers)
    
     soup=BeautifulSoup(re.text,'html.parser')
    
     num=soup.find('ul',class_='sellListContent')
    
     return num
    
  
    
 def get_data(num):
    
     for i in num:
    
     try:
    
         price=i.find('div',class_='totalPrice totalPrice2').find('span').text
    
         size=i.find('div',class_="houseInfo").text
    
         print(f"{size},价格为{price}万")
    
     except:
    
         pass
    
  
    
 if __name__ == '__main__':
    
     for j in range(1, 11):
    
     url = f'https://bj.lianjia.com/ershoufang/pg{j}/'
    
     headers = {
    
         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
    
     }
    
     lis=get_li()
    
     get_data(lis)
    
    
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/IJXYHpuGxbvfQs4yrtSiP9Ueqd87.png)

可以通过改 j 来改爬取网页的数量,为防止反爬,所以加个请求头,而BeautifulSoup解析后的对象是Tag对象,可以通过class或者id等来查找数据。

第二种是selenium方法,

复制代码
 from selenium import webdriver

    
 from selenium.webdriver.common.by import By
    
  
    
 web=webdriver.Chrome()
    
 web.get('https://bj.lianjia.com/ershoufang/')
    
 web.maximize_window()
    
 web.implicitly_wait(10)
    
 lis=web.find_elements(By.XPATH,'//*[@id="content"]/div[1]/ul/li')
    
 for li in lis:
    
     try:
    
     size=li.find_element(By.CLASS_NAME,'houseInfo').text
    
     price=li.find_element(By.XPATH,'//*[@id="content"]/div[1]/ul/li[1]/div[1]/div[6]/div[1]/span').text
    
     print(f"{size},价格为{price}万")
    
     except:
    
     pass
    
  
    
 input()
    
 web.close()
    
    
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/NBlYJS4wZIjtOEq86GhkxeVLoUM9.png)

其中的try except是因为中间有个li是广告,但可以通过这种方法将其忽略。

如果最后想要保存的Excel表格中的可以导入xlwt来储存

全部评论 (0)

还没有任何评论哟~