首页 > 代码库 > python爬糗百
python爬糗百
目的:显示糗百多页文字内容,一次看个够,节约时间。
工具:python 2.7,BeautifulSoup,requests (没有采用urllib2,因为比较麻烦)
先把源码贴出来:
#-*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
page_number = 1
pages = int(raw_input("输入你想要看的总页数:\n“)
while page_number <= pages:
myUrl = "http://www.qiubai.com/hot/page/" + str(page_number)
print ‘第%d页:’ %page_number
res = requests.get(myUrl)
res.encoding = ‘utf-8‘
soup = BeautifulSoup(res.text,‘html.parser‘)
content_link = soup.select(‘.content‘)
for clink in content_link:
print clink.text
page_number +=1
知识点:
1.requests
网络资源(URLs)截取套件
改善Urllib2的缺点,让使用者以最简单的方式获取网络资源
可以使用REST操作(POST,PUT,GET,DELETE)存取网络资源
import requests
newsurl = ‘http://qiubai.com/hot/page/1‘ # 糗百的网址,第1页
res = requests.get(newsrul)
res.encoding = ‘utf-8‘ # 网页的内容是utf-8的格式
# encode的作用是将unicode编码转换成其他编码的字符串
# decode的作用是将其他编码的字符串转换成unicode编码
print(res.text)
2. BeautifulSoup
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text, ‘html.parser‘) # ‘html.parser ‘是网页解析器,不加解析器会出现警告
# print soup.text #获取网页里面的文字,
我们要的内容在特定标签里,要用到select找出
‘‘‘soup = Beautiflsoup(html_sample)
header = soup.select(‘h1)#这段是用select找出含有h1标签的内容
print(header)‘‘‘ 回传一个list
print header[0]
print header[0].text #取出内文
2.1.取得含有特定CSS属性的元素:
a. 使用select找出所有id为title的元素(id前面需加#)
alink = soup.select(‘#title‘)
print(alink)
b. 使用select找出所有class为link的元素(class前面需加点号.)
soup = BeautifulSoup(html_sample)
for link in soup.select(‘.link‘)
print link
2.2 取得所有a标签内的链接
使用select找出所有a tag 的 href的链接
alinks = soup.select(‘a‘)
for link in alinks:
print link[‘href‘]
#the end
简单的爬虫,练练手,有好的建议或意见请留言,谢谢!
python爬糗百