爬取汽车之家新闻


a.首先伪造浏览器向某个地址发送HTTP请求,获取返回的字符串

import requests
response=requests.get(url='地址')#get请求 response.content  #内容 response.encoding=apparent_encoding  #检测编码形式,并设置编码 response.text  #自动转码

b.通过Beautifulsoup4解析HTML格式字符串

from bs4 import BeautifulSoup

soup = BeautifulSoup('<html>...</html>', 'html.parser')#解析嵌套,html.parser解析器,lxml等
div = soup.find(name='标签名', id='li')
div = soup.find(name='标签名', _class='li')
div = soup.find(name='标签名', attrs={'id' = 'li', 'class':'id'})

div.text
div.attrs
div.get('href')

divs = soup.find_all(name='标签名', id='li')
divs = soup.find_all(name='标签名', _class='li')
divs = soup.find_all(name='标签名', attrs={'id' = 'li', 'class':'id'})
#find找到匹配成功的第一个
#find_all全部匹配,divs为列表
import requests
from bs4 import BeautifulSoup

#下载页面
ret=requests.get(
    url='https://www.autohome.com.cn/news/'
)

# print(ret.apparent_encoding) #检测编码形式
# print(ret.content) #内容

ret.encoding=ret.apparent_encoding #设置编码
# print(ret.text)    #自动转码

#解析,获取想要的内容 beautifulsoup4
soup=BeautifulSoup(ret.text,'html.parser') #解析嵌套,html.parser解析器,lxml

#find找到匹配成功的第一个
#find_all全部匹配
div=soup.find(name='div',id='auto-channel-lazyload-article')
li_list=div.find_all(name='li')

for li in li_list:
    #标题
    h3=li.find(name='h3')
    if not h3:
        continue
    # print(h3.text)#h3.text取文本
    #简介
    p=li.find(name='p')
    # print(p.text)
    #地址
    a=li.find(name='a')
    # print(a.attrs)#获取属性
    # print(a.get('href'))
    print(h3.text,a.get('href'))
    print(p.text)
    print('='*15)
    #图片
    img=li.find(name='img')
    src=img.get('src')

    file_name=src.rsplit('__',maxsplit=1)[1]
    ret_img=requests.get(
        url='https:'+src
    )
    with open(file_name,'wb') as f:
        f.write(ret_img.content)

猜你喜欢

转载自www.cnblogs.com/q1ang/p/9250057.html