鱼C论坛

 找回密码
 立即注册
查看: 1766|回复: 2

[已解决]网页爬取 print可以输出内容,但存为csv时只存了前三个网页的内容,后面都没了

[复制链接]
发表于 2021-6-7 21:49:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. import requests
  2. import re
  3. import bs4
  4. from bs4 import BeautifulSoup as soup
  5. import time
  6. import pandas as pd

  7. url1 = 'https://www.muniao.com/'
  8. url2 = '/null-0-0-0-0-0-0-0-'
  9. url3 = '.html?tn=mn19091015'
  10. city1 = ['beijing','shanghai','qinhuangdao','qingdao'  ,'xiamen'   ,
  11.          'chengdu','hangzhou','dalian'     ,'chongqing','guangzhou',
  12.          'nanjing','xian'    ,'sanya'      ,'shenzhen' ,'weihai'   ,
  13.          'wuhan'  ,'yantai'  ,'suzhou'      ,'tianjin'  ,'changsha'  ]       #热门城市名称
  14. citychinese = ['北京', '上海', '秦皇岛', '青岛', '厦门',
  15.                '成都', '杭州', '大连',  '重庆', '广州',
  16.                '南京', '西安', '三亚',  '深圳', '威海',
  17.                '武汉', '烟台', '苏州',  '天津', '长沙']

  18. def Qingxi(na, ca, ad):       #数据清洗
  19.     na1 = ' '.join('%s'%id for id in   na)      #列表转为字符串
  20.     name = re.findall(r'>(.*?)</a>',na1)        #遍历字符串截取名称内容
  21.     #print(name)
  22.     ca1 = ' '.join('%s'%id for id in   ca)
  23.     #print(ca1)
  24.     case = re.findall(r'<span>(.*?)</',ca1)     #取出条件部分
  25.     case1 = ' '.join('%s'%id for id in  case)
  26.     case2 = []
  27.     for i in case:
  28.         j = re.findall(r'.*?评论',str(i))     #去除case里包含的评论条数
  29.         if j == []:
  30.             case2.append(i)
  31.     #print(case2)
  32.     #print(case)
  33.     ad1 = ' '.join('%s' % id for id in ad)
  34.     address = re.findall(r'地址:(.*?)\r', ad1 ,re.S)      #取出地址部分
  35.     #print(address)
  36.     Chucun(name,case2,address)

  37. def Gethtml(city, k):          #爬取网页
  38.     for x in range(1,11):     #循环嵌套网址换页
  39.             time.sleep(1)           #延时
  40.             url = url1+city+url2+str(x)+url3         #网页url
  41.             print(url)
  42.             print('正在爬取'+citychinese[k]+'市的第'+str(x)+'页租房信息')
  43.             r = requests.get(url)
  44.             s = soup(r.text, 'lxml')        #解析网页
  45.             name = s.select("a[class=s_mn_house_t1]")       #名称解析
  46.             case = s.select('p span')        #条件解析
  47.             address = s.select("div[class=list_address]")     #地址获取
  48.             Qingxi(name, case, address)

  49. def Chengshi():         #更换城市
  50.     k = 0
  51.     for i in city1:
  52.         Gethtml(i, k)
  53.         k += 1

  54. def Chucun(na,ca,ad):
  55.     ca1 = []        #居室
  56.     ca2 = []        #出租情况
  57.     ca3 = []        #居住人数
  58.     for i in ca[::3]:       #将case分成三个部分,居室,出租情况,居住人数
  59.         ca1.append(i)
  60.     #print(ca1)
  61.     for i in ca[1::3]:
  62.         ca2.append(i)
  63.     #print(ca2)
  64.     for i in ca[2::3]:
  65.         ca3.append(i)
  66.     #print(ca3)
  67.     data1 = {'名称':na, '居室':ca1, '出租情况':ca2, '居住人数':ca3,'地址':ad}
  68.     df1 = pd.DataFrame(data1)
  69.     df1.to_csv('E:/木鸟短租热门城市爬取.csv', index=None)     #csv文件的写入位置
  70. Chengshi()
复制代码

存的表格里面只有前三页网页的内容,帮忙看一下谢谢
最佳答案
2021-6-7 22:10:41
to_csv()不会追加,每次都会覆写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-7 22:10:41 | 显示全部楼层    本楼为最佳答案   
to_csv()不会追加,每次都会覆写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-8 00:15:57 | 显示全部楼层
路神 发表于 2021-6-7 22:10
to_csv()不会追加,每次都会覆写

谢谢,刚刚查了一下,加个mode='a'就好了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表