首先,这里使用的是简单的方法——“requests”模块。这种方法适合初学者使用,如果你想挑战更高级别的你可以自学scrapy爬虫框架,里面有一个“crawlscrapy”分支更是强大;下面就简单的介绍一下爬取这个电商网站。主要还是知道大概的流程之后写爬虫就很简单了。
可能在写完爬虫代码运行一小段后会出现让你登录的情况,这个你可以手动登录,也可以使用python支持的自动点击模块pyautogui。
那么进入正题。。。。。
拿到任务的执行顺序
1.分析目标url
2.构建请求头
3.发起请求
4.接收返回的响应结果,查看获取到的页面源码(有些网站你是需要解码的,用decode方法)
5.这里我是要获取搜索到的商品标题价格等(可以使用xpath、bs4、pyquery进行匹配字段)
下面是源代码。。。。
import requests
from lxml import etree
url = 'https://www.aliexpress.com/wholesale?initiative_id=SB_20190514011143&site=glo&SearchText=phone&page='
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
def geturl():
#分析url,写一个for循环进行拼接url,获取到1-100页url地址,下面的i一定要进行str字符串格式转换。
for i in range(1,101):
start_url = 'https://www.aliexpress.com/wholesale?initiative_id=SB_20190514011143&site=glo&SearchText=phone&page='+(str(i))
# print(start_url)
getdata(start_url) #调用这个函数将获取到的url传给getdata函数
def getdata(start_url):
#接收传递来的url发起请求,这里是get请求
response = requests.get(start_url,headers=headers)
if response.status_code == 200:
# print('请求成功')
html = response.content
html1 = html.decode('utf-8')
# print(html1)
#保存页面源码
# for i in range(1,101):
# with open(str(i) + '.html', 'a') as file:
# file.write(str(html1))
# print('保存成功')
c_data = etree.HTML(html1)
list_data = c_data.xpath('//ul[@id="hs-list-items"]/li[@class="list-item list-item-first util-clearfix list-item-180 "]/div[@class="right-block util-clearfix"]')
for l_data in list_data:
datas = {}
datas['titles'] = l_data.xpath('../div[@class="right-block-wrap util-clearfix"]/div[@class="detail"]/h3[@class="icon-hotproduct"]/a/@title')
print(datas)
if __name__ == '__main__':
geturl()