以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
你已经列出了非常详细的解决步骤,这些步骤将有助于你诊断和解决Python爬虫程序中的问题。以下是一些具体的建议和代码示例,以帮助你实现这些步骤:
-
检查网络请求: 在
requests.get()
之后立即打印响应的状态码和内容,确保请求成功。response = requests.get(url=url, headers=headers) print(f"Status Code: {response.status_code}") print(response.text[:500]) # 打印前500个字符以查看页面内容
-
验证BeautifulSoup解析: 在创建
BeautifulSoup
对象后打印它,确保它包含了预期的HTML结构。soup = BeautifulSoup(page_text, 'lxml') print(soup.prettify()[:1000]) # 打印前1000个字符的格式化HTML
-
检查CSS选择器: 打印选择器匹配到的所有元素,确保它们是预期的元素。
li_list = soup.select('dd > common-textnews-list sxszf-mlists-item sxszf-slists-item > li') print(li_list) # 打印所有匹配的元素
-
详情页URL处理: 确保详情页的URL拼接正确,并且可以通过
requests.get()
获取到内容。detail_response = requests.get(url=detail_url, headers=headers) print(f"Detail Status Code: {detail_response.status_code}")
-
内容提取: 在提取内容后打印出来,确保内容是预期的。
content = div_tag.text if div_tag else 'No content found' print(f"Content for '{title}': {content[:200]}") # 打印标题和内容的前200个字符
-
文件写入检查: 在写入文件后检查文件路径和内容,确保写入操作成功。
fp.write(title + ':' + content + '\n') print(f"Written to file: {title}")
-
增加异常处理: 在
requests.get()
和文件写入操作周围添加try-except
块,以便捕获并处理可能的异常。try: response = requests.get(url=url, headers=headers) response.raise_for_status() # 将触发HTTPError,如果状态码不是200 except requests.exceptions.RequestException as e: print(f"Request failed: {e}") try: fp = open('D:\\Pycharm运行结果文件\\shanbaogao.txt', 'w', encoding='utf-8') # 写入文件的代码 except IOError as e: print(f"File operation failed: {e}")
请注意,文件路径中的反斜杠应该使用双反斜杠 \\
或原始字符串前缀 r""
来避免转义问题。
最后,请确保你的代码中没有逻辑错误,例如在循环中重复解析相同的page_text
,这可能是导致你看不到结果的原因之一。希望这些建议能帮助你解决问题。