|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 老笨啊 于 2018-12-9 20:25 编辑
- import requests as res
- import pandas as pd
- from bs4 import BeautifulSoup as bs #用于解析
- def getWb(p):
- for n in range(1,p+1):
- 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
-
- 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'}
- res1 =res.get(url,headers =headers) #请求
- res1.encoding = 'utf-8' #编码,防止乱码
-
- soup = bs(res1.text,'lxml') #开始解析
- cont = soup.find('div',class_='right-book-list').find_all('div',class_='book-info')
- # print(cont) #先打印看下内容
-
- l = []
- for i in cont:
- tit = i.a.text
- aut = i.find('a',class_='default').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
- wbsite = 'https://www.readnovel.com/'+ i.a.get('href') #获取网址
- novtyp = i.find('span',class_='org').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
- cond = i.find('span',class_='red').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
- nums = i.find('span',class_='blue').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
- info = i.find('p',class_='intro').text.replace(',','').replace(' ','').replace('\r','').replace('\n','').replace('\u3000','')
- tot = [tit,aut,wbsite,novtyp,cond,nums,info]
- l.append(tot)
- # print(l) #试打印看效果
- data = pd.DataFrame(l)
- data.to_csv(r"D:\大数据学习资料\python学习\作业\09_2-1作业\pachong-1.csv",encoding ='gbk')
- getWb(5)
复制代码
以上,有两个问题请教下:
1. 我要爬取5页的网页内容,但是输入页码5,只能爬取第5页的内容,不知道循环哪里出错了。
2. 原网页的内容中有特殊字符及其包含的字符串,我想去掉,不知道如何处理。比如:【男女主身心干净,1V1】【群号:573222598】--方括号及其中间的内容要全部删除,但是它又和内容概要在一起,该怎么做呢?
问题一,原来你说的是第二个for循环啊,to_csv 默认是w模式,意思是覆盖模式,a是追加模式
问题二,只能给你几种方案
方案一,爬取过程中,利用正则去除不想要的文字。不过不可控,不提倡
方案二,先把内容全部搞下来,保存到数据库或者excel.
有excel了,先把不需要的内容罗列出来,
直接在Excel里面写正则进行数据清洗
爬取过程中,数据清洗很麻烦。所以还是建议爬取下来后,用excel来清洗数据
|
|