import requests
from bs4 import BeautifulSoup #html解析器模块
import re #正则表达式模块
visited_links = set() # 用集合存储已经访问过的标题
i = 0
file = open( 1.txt , w ,encoding= utf8 ) #打开文件设置写入
content1 =
while True:
i += 1
url1 = *****
headers = {
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 ,
Referer : ,
Cookie : ,
}
try:
response = requests.get(url1, headers=headers,timeout=3)
response.encoding = utf-8 # 设置编码
soup = BeautifulSoup(response.text, html.parser ) # 给内容设置解析器
prettify = soup.prettify() # 格式化内容
title = soup.title.string # 获取标题
pattern = r ^
http://www.crazyant.net/page/\d+$
if re.match(pattern,url1) and title != 未找到页面 – 学Python : # 没跳出这个页面则爬取
entry_title = soup.find_all(class_= entry-title )
for entry_title_1 in entry_title:
a_tag = entry_title_1.find( a ) #寻找a
a_title = a_tag.string #获取标题
if a_tag:
href = a_tag.get( href ) #获取链接
if href not in visited_links: # 判断集合里面有没有这个标题
visited_links.add(href) # 集合里面没有则添加标题
content1 += f {href}\t{a_title}\n
#file.write(content1) #写入内容
print(content1)
else:
print( 没找到页面 )
file.close()
break
except:
print( 错误 )
file.close()
exit()debug看下,用来做判断的变量类型是否正确
if href not in visited_links: # 判断集合里面有没有这个标题 href是什么数据类型的?
文本 url
可以在这个if语句上打个断点
看看变量里面存的数据为什么没有被if语句执行到
谢谢
我发现问题了,content1 += f {href}\t{a_title}\n 这里改成=号就好了