前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何自动化查询TESCO商品信息

如何自动化查询TESCO商品信息

原创
作者头像
jackcode
发布2023-05-25 14:29:58
3870
发布2023-05-25 14:29:58
举报
文章被收录于专栏:爬虫资料爬虫资料
亿牛云代理
亿牛云代理

Tesco是全球三大零售企业之一,成立于1932年,是英国最大的零售公司之一,也是世界三大零售商之一。可以在它的网站https://www.tesco.com/查询食品、饮料、家居用品、电器、玩具等商品。如果需要定期获取商品信息,可以使用爬虫程序进行采集。但是直接访问链接获取会被网站拒绝响应,因此需要进行如下优化:

1、User-Agent随机设置

因为User-Agent是请求头的一部分,它包含了浏览器的信息,如浏览器类型、版本、操作系统等。如果每次请求都使用相同的User-Agent,那么网站很容易识别出这是一个爬虫程序,从而采取反爬虫措施。通过使用多个User-Agent随机调用的方式,可以避免一个请求头长时间访问。

2、获取重定向URL

在不发送 cookie 的情况下查看 from:htmlrequests.get

代码语言:txt
复制
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta http-equiv="refresh" content="5; URL='/groceries/hu-HU/shop/alkohol/sor-cider/all?bm-verify=AAQAAAAH_...

可以看到有一个正在将您的浏览器重定向到其中包含的URL http-equiv="refresh"content="...",可以提取 URL 并跟踪重定向。

3、使用爬虫代理IP

代理IP是指通过第三方服务器的IP地址,用来隐藏爬虫服务器真实的IP地址,从而达到匿名访问网站的目的。使用代理IP可以避免被网站封禁IP,从而保证爬虫程序的正常运行。

结合上述的优化策略,提供相应的demo如下:

代码语言:python
复制
import requests
from scrapy import Selector
import random
import base64

#亿牛云(动态转发隧道代理)
# 爬虫代理加强版 代理服务器
proxyHost = "www.16yun.cn"
proxyPort = "31111"

# 爬虫代理加强版 代理验证信息
proxyUser = "16YUN"
proxyPass = "16IP"

proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host" : proxyHost,
    "port" : proxyPort,
    "user" : proxyUser,
    "pass" : proxyPass,
}

# 设置 http和https访问都是用HTTP代理
proxies = {
    "http"  : proxyMeta,
    "https" : proxyMeta,
}

user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
    # 添加更多的User-Agent值
]

headers = {
    'User-Agent': random.choice(user_agents),  # 随机选择一个User-Agent值  
}

site = 'https://bevasarlas.tesco.hu'
page_url = site + '/groceries/hu-HU/shop/alkohol/sor-cider/all'

html = requests.get(page_url, proxies=proxies, headers=headers)
sel = Selector(text=html)

# 从`content`属性提取URL
href = sel.xpath('//meta[@http-equiv]/@content').get().split('=', maxsplit=1)[1].strip('\'')

# 跟随重定向
html = requests.get(url=site + href,proxies=proxies, headers=headers)
sel = Selector(text=html)

scraped_data = sel.xpath('//li[contains(@class, "product-list--list-item")]')
card = scraped_data[0]
name = card.xpath('.//span[@class="styled__Text-sc-1xbujuz-1 ldbwMG beans-link__text"]/text()').extract()
print(name)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档