通过requests和lxml模块对网站数据进行爬取

这里就举个简单的列子,来抓取首页图片的标题!

 

 

 

 

 

 

 

首先做爬虫第一步就是需要UA伪装,通过UA伪装伪装成浏览器对网站发起请求,request发请求时有一个参数为headers,我们可以把这个User-Agent参数放到headers这个参数中

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

这个参数你可以在浏览器的抓包工具中找到

 

 

 

好了,接下来我们就可以对页面发送请求了来获取页面数据了!

import requests
from lxml import etree

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

url = 'http://699pic.com/photo/'

response = requests.get(url=url, headers=headers).text  # 此时已获取到页面数据了

 

接下来我们需要把获取到的页面传到etree生成的对象中

tree = etree.HTML(response)

 

 

 从这张图我们可以看出这件图片每个都是div而且都是在同一个div下,标题则是在每个div里面的p标签中,那我们可不可以把这些div放在一个地方,循环分别去取呢?

结果显而易见当然可以

 

div_list = tree.xpath('//div[@class="img-show"]/div/div/div')
print(div_list)
for div in div_list:
    name = div.xpath('./a[2]/p/text()')[0]
    print(name)

 

第一个div_list则是这些图片div的集合,打印看了一下保存在一个列表中了

 

 

然后再循环这个列表,把列表中的p元素对应的值取出来即可。

最终效果:

 

 

全部代码如下图所示:

import requests
from lxml import etree

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

url = 'http://699pic.com/photo/'

response = requests.get(url=url, headers=headers).text
tree = etree.HTML(response)
div_list = tree.xpath('//div[@class="img-show"]/div/div/div')
print(div_list)
f = open('name.txt', 'w', encoding='utf-8')
for div in div_list:
    name = div.xpath('./a[2]/p/text()')[0]
    f.write(name + '\n')

 

posted @ 2020-03-27 14:50  辉辉辉辉a  阅读(590)  评论(0编辑  收藏  举报