题目:按照网页提示在原始URL后面加上数字进入下一个页面。
分析:刚开始我直接提取所需的数字。几次之后突然报错,我过去一看,提示内容居然变了。仔细观察发现都是在<h3>标签里面,汉字有所变化但只有一串数字。所以我改变了思路,先把<h3>标签里的内容提取出来,再用正则表达式提取出里面的数字,加到原始URL后面。这里只需要用get()命令就行了。
注意:re.findall返回的是一个列表。索性提取出的只有一个元素。直接索引[0]就行了。
# -*- coding:utf-8 -*-
__author__ = "Bohn"
import requests
import re
URL = "http://www.heibanke.com/lesson/crawler_ex00/"
response = requests.get(URL)
#第一次是在初始页面,可以提出特别处理。
num = re.findall('<h3>你需要在网址后输入数字(.*?)</h3>', response.text, re.S)
pattern = re.compile('<h3>(.*?)</h3>', re.S)
#定义一个变量x记录次数。
x = 1
while(num != []):
element = re.findall("\d+", num[0])
URL1 = URL + element[0]
response = requests.get(URL1)
num = re.findall(pattern, response.text)
print(x,' ',URL1)
x += 1