python爬取淘宝数据

url=‘https://s.taobao.com/search?q={}&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20190401&ie=utf8&ajax=true’

headers={‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’}

request=r.Request(url.format(r.quote(h)),headers=headers)
rst=r.urlopen(request).read().decode(‘utf-8’)

from prettytable import PrettyTable
x = PrettyTable(["商品名称","商品价格","评价总数","付款人数","商铺名称","发货地区"])
x.align["商品名称"] = "1"
x.padding_width = 1
def tb(y):
    x.add_row(kxo['mods']['itemlist']['data']['auctions'][y]['raw_title'][0:5],kxo['mods']['itemlist']['data']['auctions'][y]['view_price'],kxo['mods']['itemlist']['data']['auctions'][y]['comment_count'],kxo['mods']['itemlist']['data']['auctions'][y]['view_sales'][:-2],kxo['mods']['itemlist']['data']['auctions'][y]['nick'],kxo['mods']['itemlist']['data']['auctions'][y]['item_loc'])
    pass
    for a in range(0,48):
        tb(a)
        x.sortby = "商品价格"
        print(x)
        input('')
### 使用Python编写程序爬取淘宝商品数据 要使用Python编写程序来爬取淘宝商品数据,可以采用多种方法和技术栈。以下是基于Selenium、Scrapy以及Excel导出的方式详细介绍如何完成这一任务。 #### 1. 安装必要的库 在开始之前,需要确保已安装所需的依赖库。这些库包括但不限于`requests`、`beautifulsoup4`、`selenium`和`pandas`等工具[^3]。可以通过以下命令安装它们: ```bash pip install requests beautifulsoup4 selenium pandas openpyxl ``` 如果计划使用Scrapy框架,则还需要额外安装Scrapy及其相关插件[^2]: ```bash pip install scrapy ``` 对于浏览器驱动(如ChromeDriver),需下载对应版本并配置环境变量或指定路径给Selenium加载。 --- #### 2. Selenium方式实现登录与动态页面抓取 由于淘宝网站存在反爬机制,并且部分商品信息由JavaScript渲染生成,因此推荐利用Selenium模拟真实用户的操作行为访问目标网页[^1]。下面是一个简单的例子展示如何设置基本的Selenium环境并打开淘宝首页: ```python from selenium import webdriver from selenium.webdriver.common.by import By import time options = webdriver.ChromeOptions() options.add_argument('--headless') # 可选参数:无头模式运行 driver = webdriver.Chrome(options=options) try: driver.get('https://www.taobao.com') search_box = driver.find_element(By.NAME, 'q') # 查找搜索框 search_box.send_keys('手机') # 输入关键词 button = driver.find_element(By.CLASS_NAME, 'btn-search') button.click() # 提交查询 time.sleep(5) # 等待页面加载完毕 finally: html_content = driver.page_source # 获取当前页HTML源码 driver.quit() print(html_content[:500]) # 打印部分内容验证效果 ``` 上述脚本实现了自动输入关键词“手机”,点击搜索按钮的功能,并最终保存整个页面的内容供后续解析处理。 --- #### 3. Scrapy+Selenium集成方案 当面对更复杂的场景时,比如分页翻转或者提取深层链接的商品详情页信息,单独依靠Selenium可能效率较低;此时可考虑将Scrapy的强大爬取能力与Selenium结合起来工作。具体做法如下所示: ##### (1)初始化Scrapy项目结构 执行命令新建名为`tbcrawler`的新工程目录树: ```bash scrapy startproject tbcrawler cd tbcrawler ``` ##### (2)定义Spider类逻辑 编辑文件`spiders/taobao.py`,加入类似这样的代码片段: ```python import scrapy from selenium import webdriver from scrapy.selector import Selector class TaobaoSpider(scrapy.Spider): name = "taobao" allowed_domains = ["taobao.com"] def __init__(self, *args, **kwargs): super(TaobaoSpider, self).__init__(*args, **kwargs) options = webdriver.ChromeOptions() options.add_argument("--no-sandbox") # Docker兼容选项 self.driver = webdriver.Remote( command_executor='http://localhost:4444/wd/hub', desired_capabilities=options.to_capabilities(), ) def parse(self, response): self.driver.get(response.url) sel = Selector(text=self.driver.page_source) products = sel.css('.m-itemlist .items .item') for product in products: title = product.css('.title::text').get().strip() price = product.css('.price g_price g_price-highlight::text').re_first(r'(\d+\.\d+)') yield { 'title': title, 'price': float(price), } next_page_url = sel.xpath('//a[@trace="srp_bottom_pagedown"]/@href').extract_first() if next_page_url is not None: abs_next_page_url = response.urljoin(next_page_url) request = scrapy.Request(abs_next_page_url, callback=self.parse) yield request def closed(self, reason): self.driver.quit() ``` 此段落描述了一个完整的爬虫流程,涵盖了从启动到关闭期间的所有必要环节。 --- #### 4. 导出至Excel表单存储结果 最后一步就是把收集来的数据整理成易于阅读的形式存盘下来。Pandas提供了便捷的方法来做这件事[^5]: ```python import pandas as pd dataframe = pd.DataFrame({ 'Title': ['iPhone X', 'Samsung Galaxy S9'], 'Price': [7890.0, 6500.0], }) output_file_path = './results.xlsx' writer = pd.ExcelWriter(output_file_path, engine='openpyxl') dataframe.to_excel(writer, index=False, sheet_name='Sheet1') writer.save() print(f'Data has been written to {output_file_path}') ``` 这样就完成了从采集原始资料直至形成可供进一步分析使用的电子表格文档全过程。 --- ### 注意事项 - 频繁请求可能会触发IP封禁,请合理控制频率。 - 尊重各站点robots.txt协议规定范围内的资源访问权限。 - 对敏感字段加密传输保护隐私安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值