一.爬虫项目一: 豆瓣图书网站图书的爬取: import requests import re content = requests.get("https://book.douban.com/").text #注:此时我们打印输出结果,可以看到输出我们的网页字符串: # print(content) #然后我们编辑匹配豆瓣图书网站抓取图书所用到的正则表达式。 pattern = re.compile(r'<li.*?class="cover".*?href="(.*?)".title.*?class="info".*?class="more-meta".*?class="title">(.*?)</h4>.*?class="author">(.*?)</span>.*?class="year">(.*?)</span>.*?class="publisher">(.*?)</span>.*?</li>',re.S) #注意,经过测试,我们可以使用.代表空格,然后匹配的元组(.*?)后面最好不要再加.*?,要不然这样容易报错, #容易匹配不出结果。 results = re.findall(pattern,content) #然后我们通过re.findall函数就可以匹配出我们想要的结果了。 print(results) #注,经过测试,我们发现,通过re.findall返回的结果也就是我们获取的结果是一个列表,而每一个列表 #里面的数据都是一个元组,此时我们就可以先通过循环便利的方式先获取到列表里面的个每个元组 for result in results: print(result) #注,通过循环遍历的方式,我们就可以获取到列表里面的每个元组,从打印出来的每个元组的信息来看,每个元组 #都有五个元素,他们分别是url,name,author,date,publisher 获取元组里面的数据,我们可以通过位置符号来指定: 如,result[0],result[1],result[2],result[3],result[4],我们也可以直接打印输出: 如:print(result[0],result[1],result[2],result[3],result[4]) 我们也可以通过一一对应的方式,将元组中的各个元素分别赋值给每个变量: 如下所示: url,name,author,date,publisher = result 然后打印输出: print(url,name,author,date,publisher) #但是经过测试我们可以发现,其实每个元组里面的值后面都带了一个换行符,导致元组里面的数据取出来的时候 #不是在一行里面显示的,此时我们可以将这些换行符去掉,这里我们有两种方式,可以实现目的: 第一种方式: #使用strip()的方法,去除字符串周围的空格元素,即可得到我们想要的结果 url = url.strip() name = name.strip() author = author.strip() date = date.strip()
publisher = publisher.strip() #此时打印输出,就可以得到我们想要的值。 print(url,name,author,date,publisher) 第二种方式:使用re.sub的方法: #用空字符串来替换我们字符串中的换行符,此时我们用\s来代表换行符,用一个空字符串来替代他,格式如下: url = re.sub('\s', "", url) name = re.sub('\s', "", name) author = re.sub('\s', "", author) date = re.sub('\s', "", date) publisher = re.sub('\s', "", publisher) #此时打印输出,也可以得到我们想要的值。 print(url,name,author,date,publisher)