### Python爬虫抓取Ebay页面 #### 概述 本篇内容主要介绍如何使用Python编写网络爬虫来抓取Ebay网站上的商品信息。在实际应用中,爬虫技术被广泛应用于数据挖掘、信息检索等领域,对于电商网站来说更是如此。通过爬虫可以收集大量的商品信息,为数据分析提供有力的支持。 #### 技术栈 1. **Python**: 一种高级编程语言,具有丰富的第三方库支持。 2. **BeautifulSoup**: 一个可以从HTML或XML文件中提取数据的Python库。 3. **Urllib2**: 用于处理HTTP请求的Python内置库(注意:在Python 3中已被`urllib.request`替代)。 4. **MySQLdb**: 用于连接MySQL数据库的Python库。 #### 关键步骤 1. **编码设置**: - 为了正确处理中文字符,首先需要设置系统默认编码为`utf-8`。这一步非常重要,避免出现乱码情况。 ```python import sys reload(sys) sys.setdefaultencoding('utf-8') ``` 2. **网络请求**: - 使用`urllib2`发送HTTP请求获取网页内容。这里还设置了超时时间为600秒,以应对可能发生的长时间等待。 ```python import urllib2 socket.setdefaulttimeout(600) page = urllib2.urlopen(address) ``` 3. **解析HTML**: - 利用`BeautifulSoup`解析HTML文档,并提取所需的数据。 ```python from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(page) ss = soup.findAll("table", {"class": "li"}) ``` 4. **数据处理**: - 遍历每一条记录,并对每个元素进行相应的处理。例如,获取图片URL、商品链接、标题等信息。 ```python for table in ss: tc = table.contents[0] xx = BeautifulSoup(''.join(str(tc))) td_list = xx.findAll("td") for td in td_list: # 根据索引位置处理不同的字段 ``` 5. **存储数据到MySQL**: - 连接MySQL数据库并执行SQL语句将爬取到的信息插入数据库。 ```python import MySQLdb conn = MySQLdb.connect(db="ebay", user="root", passwd="root", use_unicode=1, charset='utf8') cursor = conn.cursor() insert_sql = "INSERT INTO items (name, ebay_link, pic, trs, bids, price, time_left, cid, pid, type) VALUES ('{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '1')" cursor.execute(insert_sql.format(title, href, img, trs, bids, price, time_left, rec[0], rec[1])) conn.commit() ``` #### 代码详解 1. **数据库连接与查询**: - 使用MySQLdb库连接数据库,并执行SQL查询语句获取待爬取的分类列表。 ```python sql = "SELECT id, pid, link, auction_page FROM category WHERE pid=2" cursor.execute(sql) alldata = cursor.fetchall() ``` 2. **页面抓取与解析**: - 对每一个分类的每一页进行抓取,并使用BeautifulSoup解析HTML文档。 - 通过`findAll`方法查找特定的HTML标签,然后进一步处理这些标签内的内容。 3. **数据清洗与保存**: - 在遍历过程中,根据不同的标签位置处理相应的字段,并将这些字段存储到变量中。 - 使用字符串拼接的方式构建SQL插入语句,并执行SQL语句将数据保存到MySQL数据库中。 #### 注意事项 - 由于Ebay网站可能会频繁更新其网页结构,因此需要定期检查HTML标签是否发生变化,以确保爬虫能够正常运行。 - 网络爬虫可能会受到目标网站的反爬策略限制,如IP封禁、验证码验证等,因此需要合理控制爬取频率,并考虑使用代理IP等手段降低被封风险。 - 在实际应用中,还需要考虑法律和道德问题,确保爬取行为符合相关法律法规的要求。 - 对于初学者而言,建议先从简单的网页开始练习爬虫技术,逐步提高难度,积累经验。 通过上述内容,我们可以看到使用Python结合BeautifulSoup和Urllib2可以有效地抓取Ebay网站上的商品信息,并将其存储到MySQL数据库中。这种技术不仅可以应用于Ebay,还可以扩展到其他电商平台,为后续的数据分析和处理提供基础数据支持。
#先在整理好Ebay分类, 也可以抓
#引用请注明来源: http://www.21ccvn.com
import sys
import socket
import urllib2
import re
import MySQLdb
from BeautifulSoup import BeautifulSoup
type = sys.getfilesystemencoding()
reload(sys)
sys.setdefaultencoding('utf-8')
socket.setdefaulttimeout(600000000)
conn = MySQLdb.connect(db="ebay",user="root", passwd="root",use_unicode=1, charset='utf8')
sql="select id,pid,link,auction_page from category where pid=2"
cursor=conn.cursor()
cursor.execute(sql)
alldata=cursor.fetchall()
if alldata:
for rec in alldata:
pNo=int(rec[3])+1
for pageNo in range(1,pNo):
address="http://coins.shop.ebay.com"+rec[2]+"&rt=nc&LH_Auction=1&_ipg=50&_pgn="+str(pageNo)
print address
page=urllib2.urlopen(address)
soup = BeautifulSoup(page)
ss= soup.findAll("table", {"class":"li"})
i=0
for table in ss:
tc= table.contents[0]
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页