鱼C论坛

 找回密码
 立即注册
查看: 1293|回复: 21

[已解决]爬取数据不全 求解 谢谢!!

[复制链接]
发表于 2018-12-1 20:52:23 | 显示全部楼层 |阅读模式

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

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

x
def get_url(url):
    res = requests.get(url)
        #将网页编码gbk转换成utf-8
    soup = BeautifulSoup(res.text.encode('iso-8859-1').decode('gbk'), 'lxml')
    tables = soup.select('table')
   
    table = tables[3]
    df_list = []

    df_list.append(pd.concat(pd.read_html(table.prettify())))
    df_n = pd.concat(df_list)
    return df_n
ssss= get_url('http://qq.ip138.com/train/guangdong/guangzhounan.htm')

共有940 条 每次只能爬出110 条是怎么回事  
最佳答案
2018-12-2 01:06:07
  1. from lxml import etree
  2. import requests
  3. def openurl(url):
  4.     head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36',}
  5.     res=requests.get(url,headers=head)
  6.     res.encoding='gb2312'
  7.     text=res.text
  8.     return text
  9. def parseurl(text):
  10.     train_info_dict={}
  11.     html=etree.HTML(text)
  12.     tr=html.xpath('//tr[@onmouseover="this.bgColor=\'#E6F2E7\';"]')
  13.     for each in tr:
  14.         checi=each.xpath('./td[1]/a/b/text()')[0]
  15.         xinghao=each.xpath('./td[2]/text()')[0]
  16.         shifazhan=each.xpath('./td[3]/text()')[0]
  17.         shifashijian=each.xpath('./td[4]/text()')[0]
  18.         zhongdianzhan=each.xpath('./td[8]/text()')[0]
  19.         daodashijian=each.xpath('./td[9]/text()')[0]
  20.         train_info_dict[checi]=[xinghao,shifazhan,shifashijian,zhongdianzhan,daodashijian]
  21.     print(train_info_dict)
  22.     print(len(train_info_dict))
  23. def main():
  24.     url='http://qq.ip138.com/train/guangdong/guangzhounan.htm'
  25.     text=openurl(url)
  26.     parseurl(text)
  27. if __name__=='__main__':
  28.     main()
复制代码

我就直接打印出来了,你可以用pickle把它以二进制保存,或者json格式保存,当然也可以引用openpyxl保存到excal,但是考虑到原网站就是以表格形式输出,所以感觉没必要。共940行全部爬取
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-1 21:00:59 | 显示全部楼层
我爬取的就是940条啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 21:08:09 | 显示全部楼层
bs4 解析gbk编码的网站有时候会解析不全,应该是在111行左右有一些特殊字符吧。  
用xpath或者pq,re等方式解析一下试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-1 23:19:37 From FishC Mobile | 显示全部楼层
wongyusing 发表于 2018-12-1 21:08
bs4 解析gbk编码的网站有时候会解析不全,应该是在111行左右有一些特殊字符吧。  
用xpath或者pq,re等方 ...

大哥你能帮我改一下么  我给您充话费  哈哈哈  我是根本不会爬  就这段代码还是我东拼西凑弄的  谢谢您嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-1 23:20:08 From FishC Mobile | 显示全部楼层
塔利班 发表于 2018-12-1 21:00
我爬取的就是940条啊

莫非还跟电脑有关么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 01:06:07 | 显示全部楼层    本楼为最佳答案   
  1. from lxml import etree
  2. import requests
  3. def openurl(url):
  4.     head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36',}
  5.     res=requests.get(url,headers=head)
  6.     res.encoding='gb2312'
  7.     text=res.text
  8.     return text
  9. def parseurl(text):
  10.     train_info_dict={}
  11.     html=etree.HTML(text)
  12.     tr=html.xpath('//tr[@onmouseover="this.bgColor=\'#E6F2E7\';"]')
  13.     for each in tr:
  14.         checi=each.xpath('./td[1]/a/b/text()')[0]
  15.         xinghao=each.xpath('./td[2]/text()')[0]
  16.         shifazhan=each.xpath('./td[3]/text()')[0]
  17.         shifashijian=each.xpath('./td[4]/text()')[0]
  18.         zhongdianzhan=each.xpath('./td[8]/text()')[0]
  19.         daodashijian=each.xpath('./td[9]/text()')[0]
  20.         train_info_dict[checi]=[xinghao,shifazhan,shifashijian,zhongdianzhan,daodashijian]
  21.     print(train_info_dict)
  22.     print(len(train_info_dict))
  23. def main():
  24.     url='http://qq.ip138.com/train/guangdong/guangzhounan.htm'
  25.     text=openurl(url)
  26.     parseurl(text)
  27. if __name__=='__main__':
  28.     main()
复制代码

我就直接打印出来了,你可以用pickle把它以二进制保存,或者json格式保存,当然也可以引用openpyxl保存到excal,但是考虑到原网站就是以表格形式输出,所以感觉没必要。共940行全部爬取
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 01:08:17 | 显示全部楼层
我是以字典的形式输出,当然喜欢哪种这都可以改,另外并没有深爬,我看到车次下面是可以点进去的。当然要深爬难度要高点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 09:51:16 | 显示全部楼层
fan1993423 发表于 2018-12-2 01:06
我就直接打印出来了,你可以用pickle把它以二进制保存,或者json格式保存,当然也可以引用openpyxl保存到 ...

太谢谢你了!谢谢!!我修改了一下 直接输出DataFrame了  FAN哥如果你不介意的话我想为你充话费
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 09:52:31 | 显示全部楼层
fan1993423 发表于 2018-12-2 01:08
我是以字典的形式输出,当然喜欢哪种这都可以改,另外并没有深爬,我看到车次下面是可以点进去的。当然要深 ...

fan哥  这么巧 你自贡的吗  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 10:37:23 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 09:52
fan哥  这么巧 你自贡的吗

嗯,对的,我在自贡读书,不过现在转到宜宾了,难道我们是一个学校的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 10:45:12 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 09:51
太谢谢你了!谢谢!!我修改了一下 直接输出DataFrame了  FAN哥如果你不介意的话我想为你充话费

15583729327,你充吧,我正好话费要没钱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 10:45:52 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 09:51
太谢谢你了!谢谢!!我修改了一下 直接输出DataFrame了  FAN哥如果你不介意的话我想为你充话费

你都会DataFrame了,不错啊,看你是学会了pandas库了,加油,咱们一起努力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 15:54:02 From FishC Mobile | 显示全部楼层
fan1993423 发表于 2018-12-2 10:45
15583729327,你充吧,我正好话费要没钱了

哈哈  给你充了啊 哥们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 15:56:01 From FishC Mobile | 显示全部楼层
fan1993423 发表于 2018-12-2 10:37
嗯,对的,我在自贡读书,不过现在转到宜宾了,难道我们是一个学校的吗?

不是  我女朋是自贡的  在宜宾读研吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 15:56:41 From FishC Mobile | 显示全部楼层
fan1993423 发表于 2018-12-2 10:45
你都会DataFrame了,不错啊,看你是学会了pandas库了,加油,咱们一起努力

分析层面的几个库用的还可以  爬虫一点不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 16:13:46 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 15:56
不是  我女朋是自贡的  在宜宾读研吗

嗯,我目前也是在宜宾读研
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 16:14:21 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 15:56
分析层面的几个库用的还可以  爬虫一点不会

你将来也准备从事python这方面的工作吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 16:14:53 | 显示全部楼层
曹贼不要怕 发表于 2018-12-2 15:54
哈哈  给你充了啊 哥们

谢谢了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 18:57:31 | 显示全部楼层
fan1993423 发表于 2018-12-2 16:13
嗯,我目前也是在宜宾读研

加油哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 18:58:42 | 显示全部楼层
fan1993423 发表于 2018-12-2 16:14
你将来也准备从事python这方面的工作吗?

想从事数据分析方面的工作  做好用python  哥们方便加个wx吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 15:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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