鱼C论坛

 找回密码
 立即注册
查看: 719|回复: 5

[已解决]爬网页内容的问题求助

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

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

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

x
本帖最后由 老笨啊 于 2018-12-9 20:25 编辑
  1. import requests as res
  2. import pandas as pd
  3. from bs4 import BeautifulSoup as bs #用于解析
  4. def getWb(p):
  5.     for n in range(1,p+1):
  6.         url = 'https://www.readnovel.com/all?pageSize=10&gender=2&catId=-1&isFinish=-1&isVip=-1&size=-1&updT=-1&orderBy=0&pageNum=%s'%n
  7.         
  8.         headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
  9.         res1 =res.get(url,headers =headers)  #请求
  10.         res1.encoding = 'utf-8' #编码,防止乱码
  11.         
  12.         soup = bs(res1.text,'lxml') #开始解析
  13.         cont = soup.find('div',class_='right-book-list').find_all('div',class_='book-info')
  14.         # print(cont) #先打印看下内容
  15.         
  16.         l = []
  17.         for i in cont:
  18.             tit = i.a.text
  19.             aut = i.find('a',class_='default').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
  20.             wbsite = 'https://www.readnovel.com/'+ i.a.get('href')  #获取网址
  21.             novtyp = i.find('span',class_='org').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
  22.             cond = i.find('span',class_='red').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
  23.             nums = i.find('span',class_='blue').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
  24.             info = i.find('p',class_='intro').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
  25.             tot = [tit,aut,wbsite,novtyp,cond,nums,info]
  26.             l.append(tot)
  27.         # print(l)  #试打印看效果
  28.     data = pd.DataFrame(l)
  29.     data.to_csv(r"D:\大数据学习资料\python学习\作业\09_2-1作业\pachong-1.csv",encoding ='gbk')
  30. getWb(5)
复制代码


以上,有两个问题请教下:
1. 我要爬取5页的网页内容,但是输入页码5,只能爬取第5页的内容,不知道循环哪里出错了。
2. 原网页的内容中有特殊字符及其包含的字符串,我想去掉,不知道如何处理。比如:【男女主身心干净,1V1】【群号:573222598】--方括号及其中间的内容要全部删除,但是它又和内容概要在一起,该怎么做呢?
最佳答案
2018-12-10 12:22:41
问题一,原来你说的是第二个for循环啊,to_csv 默认是w模式,意思是覆盖模式,a是追加模式
问题二,只能给你几种方案

方案一,爬取过程中,利用正则去除不想要的文字。不过不可控,不提倡
方案二,先把内容全部搞下来,保存到数据库或者excel.  
         有excel了,先把不需要的内容罗列出来,
         直接在Excel里面写正则进行数据清洗

爬取过程中,数据清洗很麻烦。所以还是建议爬取下来后,用excel来清洗数据         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-9 20:33:50 | 显示全部楼层
问题一   
你应该在爬取的页码加一  爬5页就要写6页
for循环rangge的基础知识

问题二
可以先用一个正则把内容去掉你不要的括号内容。  
pandans自带好像有个方法可以去掉不要的内容。
看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 09:14:42 | 显示全部楼层
wongyusing 发表于 2018-12-9 20:33
问题一   
你应该在爬取的页码加一  爬5页就要写6页
for循环rangge的基础知识

问题一,后面解决了。是保存文件时,to_csv后面参数,还要增设mode = ‘a’。。具体不知道为啥,别人告诉我的。
问题二,不懂正则表达式。。我一会搜下,谢谢。可以的话,麻烦提供个参考答案,我看下我的做法有没错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 12:22:41 | 显示全部楼层    本楼为最佳答案   
问题一,原来你说的是第二个for循环啊,to_csv 默认是w模式,意思是覆盖模式,a是追加模式
问题二,只能给你几种方案

方案一,爬取过程中,利用正则去除不想要的文字。不过不可控,不提倡
方案二,先把内容全部搞下来,保存到数据库或者excel.  
         有excel了,先把不需要的内容罗列出来,
         直接在Excel里面写正则进行数据清洗

爬取过程中,数据清洗很麻烦。所以还是建议爬取下来后,用excel来清洗数据         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 12:35:56 | 显示全部楼层
wongyusing 发表于 2018-12-10 12:22
问题一,原来你说的是第二个for循环啊,to_csv 默认是w模式,意思是覆盖模式,a是追加模式
问题二,只能给 ...

感谢你的热心~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 12:41:17 | 显示全部楼层

再给点意见吧,
爬取过程中,最好是用字典装载内容,没什么特殊情况,尽量不要用列表
不然,内容很容易混淆。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 10:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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