看了点儿简单的python基础,直接干实例,毕竟我自学能力差,一点点儿看基础,看了还是什么也不会,永远只会print()……
于是直接干实例,不懂的问题再搜索。
仿着例子做爬虫。是爬去热榜书名,很简单的爬虫。就像一些大神说的,只要用好了requests和beautifulsoup就基本可以爬一些“简单”的网站了。
我哪儿知道他简单不简单?
于是就遇到了问题。
import requests
from bs4 import BeautifulSoup
import time
num = 1 ##计数
start_time = time.time()
url = 'https://read.douban.com/charts?type=long_finalized&index=featured&dcs=charts&dcm=chart-card-more'
html = requests.get(url,headers = headers)
print(html.status_code)
soup = BeautifulSoup(html.content,'html.parser')
print(soup.prettify())
book_list = soup.find_all('h4',attrs = {'class':'title'})
for book in book_list:
node = book.contents[0]
title = node.contents[0]
print(title)
name = '<>'
print = ('第%d本书'%num,name)
num = num + 1
time.sleep(1)
end_time = time.time()
duration_time = end_time - start_time
print('运行时间:%.2f'%duration_time + '秒')
运行之,就发现了status_code=418。怪不得程序不往下走。
百度之,这个问题不多啊。直接搜status_code出现的问题,没有418。
才知道,貌似这是网站为了反爬虫,设置的。
经过网上查询得知,418的意思是被网站的反爬程序返回的,网上解释为,418 I’m a teapot
The HTTP 418 I’m a teapot client error response code indicates that the server refuses to brew coffee because it is a teapot. This error is a reference to Hyper Text Coffee Pot Control Protocol which was an April Fools’ joke in 1998.
解决办法:
当时用了requests库,没有添加请求头等信息,可能被反爬程序识别了,再次请求添加了header的User-Agent信息就可以了。
我就加了下面一段,虽然我根本不懂!
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
html = requests.get(url,headers = headers)
就解决了。