发布时间:2026-10-03 04:51:52 浏览次数:2
Python作为一种非常流行的编程语言,被广泛地应用于各个领域,其中爬虫技术在大数据、人工智能等领域中扮演着重要的角色。但是爬虫技术也有一些技巧和注意点需要掌握,本文将会对使用Python爬虫抓站的一些技巧进行总结。
我们需要爬取简书网站上的文章,因此我们需要去简书网站浏览页面,确定所需数据的网页元素位置和访问地址。
在Python中我们可以使用 requests 库来完成网站数据的请求和响应,如下:
import requests# 获取简书博客页面的HTML代码url = "https://www.jianshu.com"r = requests.get(url)content = r.content.decode('utf-8')通过Beautiful Soup库可以非常方便地解析网页中的HTML和XML代码,并且可以根据需要进行数据的提取和操作,如下:
from bs4 import BeautifulSoup# 解析简书博客页面的HTML代码soup = BeautifulSoup(content, "html.parser")# 找到所有文章标题元素titles = soup.find_all('a', {'class': 'title'})# 输出文章标题for title in titles: print(title.string)对于爬取到的数据,如果不进行清洗和分析,很难达到我们预期的效果。例如对于获取到的文章内容,我们需要去除其中的HTML标签和空格等无用信息,只保留正文内容,可以通过如下方式进行清洗:
# 处理文章内容for title in titles: # 获取文章链接 link = "https://www.jianshu.com" + title.get("href") text_r=requests.get(link) # 解析网页 HTML 代码 soup_text = BeautifulSoup(text_r.content, 'html.parser') # 获取文章内容 article_text = soup_text.find('p', {'class': 'show-content-free'}).get_text() # 处理文章内容,去除无用字符 article_text = article_text.replace('\n', '').replace(' ', '') # 输出文章内容 print(article_text)我们需要爬取京东网站上的商品,因此我们需要去京东网站浏览页面,确定我们需要爬取的商品的网页元素位置和访问地址。
按照 Scrapy 爬虫的通用流程,我们将会新建一个 Scrapy 项目进行爬取:
# 1. 创建 Scrapy 项目scrapy startproject jd# 2. 创建爬虫类cd jdscrapy genspider jdbook book.jd.com添加如下代码到京东 book.jd.com 上:
# 获取书籍列表def parse(self, response): # 遍历获取书籍标题、价格 for sel in response.xpath('//ul[@class="gl-warp clearfix"]/li'): # 获取书籍标题和价格 title = sel.xpath('p/p/a/em/text()').extract()[0] price = sel.xpath('p/p/strong/i/text()').extract()[0] # 输出数据 print(title, price)对于爬取到的商品,我们可以通过 Scrapy 爬虫框架提供的特性对数据进行清洗和分析。例如可以将数据存储到数据库中、去重复等操作。这里我们将数据存储到csv文件中:
class JdbookSpider(scrapy.Spider): def __init__(self, name=None, **kwargs): super().__init__(name, **kwargs) self.page = 1 # 书籍列表页 def start_requests(self): url = "https://list.jd.com/list.html?cat=1713,3258,3305&page=%s" urls = [url % i for i in range(1, 2)] for url in urls: yield scrapy.Request(url=url, callback=self.parse) # 获取书籍列表 def parse(self, response): # 遍历获取书籍标题、价格 for sel in response.xpath('//ul[@class="gl-warp clearfix"]/li'): # 获取书籍标题和价格 title = sel.xpath('p/p/a/em/text()').extract()[0] price = sel.xpath('p/p/strong/i/text()').extract()[0] # 保存数据到csv with open('goods.csv', 'a', newline='') as file: writer = csv.writer(file) writer.writerow([title, price]) # 输出数据 print(title, price)本文介绍了使用Python进行爬虫开发时常见的技巧和注意点。在实际使用中,我们应该根据不同的场景和数据需求选择合适的爬虫框架、合适的爬虫方法。如果存在反爬机制,我们可以通过一些技巧进行绕过;同时也需要注意爬取频率等细节问题。在进行数据清洗和分析时,应该根据具体需求选择适当的方式进行,不可盲目使用,否则会浪费大量时间和资源。