qq_43415765
漫漫在努力
采纳率50%
2021-03-08 14:36

用python爬取房天下房价遇到了问题

30
已采纳
import requests as req
res=req.get("https://zj.esf.fang.com/")
from bs4 import BeautifulSoup
soup=BeautifulSoup(res.text,"html.parser")
houses = soup.select(".shop_list dl")
def getHouseInfo(url):
    info = {}
    soup = BeautifulSoup(req.get(url).text,"html.parser")
    res = soup.select(".tab-cont-right .trl-item1")
    for re in res:
        tmp = re.text.strip().split('\n')
        info[tmp[-1].strip()] = tmp[0].strip()
    xiaoqu = soup.select(".rcont .blue")[0].text
    info["小区名字"] = xiaoqu
    zongjia = soup.select(".tab-cont-right .trl-item")
    info["总价"] = zongjia[0].text.strip()

    print(info)

getHouseInfo("https://zj.esf.fang.com/chushou/3_181595442.htm?rfss=1-ca39b791988eaa89e8-1d")

domain = "https://zj.esf.fang.com"
#遍历返回的房屋信息
for house in houses:
        #加try except异常处理
     try:
        url = domain+house.select(".clearfix a")[0]['href']
        getHouseInfo(url)
    except Exception as e:
        print("---------->",e)

遇到的问题如图和教学视频中的爬取结果(跟教学视频爬的城市不一样),同一页的房源网址是可以打印出来,但抓取不到它们的房源数据

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_42678268 bj_0163_bj 1月前
    import requests as req
    res=req.get("https://zj.esf.fang.com/")
    from bs4 import BeautifulSoup
    soup=BeautifulSoup(res.text,"html.parser")
    houses = soup.select(".shop_list dl")
    headers={'referer': 'https://zj.esf.fang.com/',
             'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
             'cookie': 'global_cookie=85ww712wgfqr3vaewv97pvo761yklqdm0fj; engine_source_cookie=baidu; sf_source=baidu; __utmc=147393320; __utmz=147393320.1614590696.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; csrfToken=nPflwRE7S0Sk5jJEZFaBZH6K; __utma=147393320.839996281.1614590696.1614590696.1615187340.2; lastscanpage=0; city=zj; g_sourcepage=esf_fy%5Exq_pc; __utmt_t0=1; __utmt_t1=1; __utmt_t2=1; __utmb=147393320.45.10.1615187340; unique_cookie=U_85ww712wgfqr3vaewv97pvo761yklqdm0fj*14'}
    
    def getHouseInfo(url):
        info = {}
        soup = BeautifulSoup(req.get(url,headers=headers).text,"html.parser")
        res = soup.select(".tab-cont-right .trl-item1")
        for re in res:
            tmp = re.text.strip().split('\n')
            info[tmp[-1].strip()] = tmp[0].strip()
        xiaoqu = soup.select(".rcont .blue")[0].text
        info["小区名字"] = xiaoqu
        zongjia = soup.select(".tab-cont-right .trl-item")
        info["总价"] = zongjia[0].text.strip()
    
        print(info)
    
    getHouseInfo("https://zj.esf.fang.com/chushou/3_181595442.htm?rfss=1-ca39b791988eaa89e8-1d")
    
    domain = "https://zj.esf.fang.com"
    #遍历返回的房屋信息
    for house in houses:
            #加try except异常处理
         try:
            url = domain+house.select(".clearfix a")[0]['href']+'?channel='+house.select(".clearfix a")[0]['data_channel']+'&psid='+house.select(".clearfix a")[0]['ps']
            getHouseInfo(url)
         except Exception as e:
            print("---------->",e)
            
    点赞 评论 复制链接分享
  • weixin_42678268 bj_0163_bj 1月前

    改了一下,可以爬到了。 cookie 换成你自己的

    点赞 评论 复制链接分享
  • weixin_42678268 bj_0163_bj 1月前

    点赞 评论 复制链接分享
  • qq_22475211 深白色的风 1月前

    网址错了,导致爬到的数据为空,你去取一个数据就超出了列表范围,你可以打印出列表看看是不是空的

    点赞 评论 复制链接分享
  • qq_22475211 深白色的风 1月前

    你的网址输错了吧,https://esf.cd.fang.com/这个网址有问题应该是https://cd.esf.fang.com/

    点赞 评论 复制链接分享
  • weixin_42678268 bj_0163_bj 1月前

    一个是zj ,湛江,一个是cd 成都 

    点赞 评论 复制链接分享
  • weixin_42678268 bj_0163_bj 1月前

    你们的网址不一样吧,domain 

    点赞 评论 复制链接分享

为你推荐