爬虫练习---某小说网站月票榜
转载请标明出处https://www.cnblogs.com/hahagaga/p/9591606.html,谢谢
这里对小说网进行爬虫,由于页面单一,没有进行sleep操作
之前爬某众点评,各种切页面,各种请求,然而忘记sleep,在调试阶段,ip成功进入小黑屋,隔着屏幕,某网站还把我的多层ip直接返给了我,满满的嘲讽。。。
话说我只是练习练习,显然我菜得抠脚,但是我真的没有恶意。。。这里我想对某站表示诚挚的歉意!
各位同学在爬虫时候一定要注意增加ip池,以及主要的sleep,如果爬虫没有sleep,对被爬虫服务器来说是高负荷的,请各位Spider-Man手下留情,文明爬虫。
本次爬虫由于只是简单练习,只爬了排名,类型,作品名,作品url,以及作者,并没有爬取小说内容,话说应该没有涉及到违法内容。。。
下面代码自己改路径,应该拿来就能用
1 from bs4 import BeautifulSoup
2 import requests
3
4 class pachong():
5
6 def get_html(self, web_url):
7 header = {
8 "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16"}
9 html = requests.get(url=web_url, headers=header).text
10 Soup = BeautifulSoup(html, "lxml")
11 data = Soup.find("ul", {"class": "main_con"})
12 return data
13
14 def get_info(self, web_url):
15 f = open("txt路径", "a")
16 for info in self.get_html(web_url):
17
18 if info.find("span") == -1 or info.find("span") == None:
19 pass
20 else:
21 # 排名
22 paiming = info.find("span", {"class": "pm"}).find('em').get_text()
23 # 类型
24 kind = info.find("span", {"class": "kind"}).find('a').get_text().replace('[', '').replace(']', '')
25 # 作品名
26 name = info.find("a", {"class": "fs14"})['title']
27 # 作品url
28 bookurl = info.find("a", {"class": "fs14"})['href']
29 # 月票数量
30 bit = info.find("span", {"class": "bit"}).get_text()
31 # 作者
32 author = info.find("span", {"class": "author"}).find('a').get_text()
33 f.write(paiming + '. ')
34 f.write(kind + " ")
35 f.write(name + " ")
36 f.write(bit + " ")
37 f.write(author + "\n")
38 f.write(bookurl + "\n")
39 f.write("\n")
40 f.close() # 关闭文件
41
42
43 if __name__ == "__main__":
44 run = pachong()
45 page = 1 # 初始化页数,TOP一共有250部 每页25部
46 while page <= 4:
47 web_url = "http://book.zongheng.com/ranknow/male/r1/c0/q20180801/%s" % page + ".html"
48 run.get_info(web_url)
49 page += 1
查看了很多爬虫的框架,发现原理好像都差不多, 这里使用beautifulsoup是感觉这个相对来说简单一些,而且很适合初学者。
个人感觉爬虫与pc端ui自动化测试相通的,有些url通过request请求后,元素并没有返回,这时候可以结合selenium进行ui交互,获取需要的内容也是可以的