注册 登录
编程论坛 Python论坛

python京东手机爬虫

编程小猪 发布于 2022-11-02 16:33, 1546 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


代码如下:
import parsel as parsel
import requests
import csv  # 内置模块
from lxml import etree

def get_html(page):
    url = 'https://search.'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.9231 SLBChan/30'
    }
    response = requests.get(url=url, headers=headers)
    # print(response.text)
    html = parsel.Selector(response.text)
    # print(html)
    return html

def parse_data(selector):
    href = selector.css('li::attr(data-sku) ')
    # href = selector.css('.p-img a::attr(href)').getall()
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.9231 SLBChan/30'
    }
    res = []
    for index in zip(href):
        # https://item.
        index_url = 'https://item.'+str(index[0])+'.html'
        response_1 = requests.get(url=index_url, headers=headers)
        selector_1 = parsel.Selector(response_1.text)
        print(selector_1)
        price = selector_1.css('ul.parameter2.p-parameter-list li:nth-child(1)::text').get()
        # #detail > div.tab-con > div:nth-child(1) > div.p-parameter > ul.parameter2.p-parameter-list > li:nth-child(1)
        print(price)

if __name__=='__main__':
    page = 1
    html = get_html(page)
    res = parse_data(html)

求教:按照我的方法爬取<li>标签下title的值,该怎么写?或者是不是我根本没有爬取到这个页面的html?
京东的价格和评论怎么爬取不到啊?

[此贴子已经被作者于2022-11-2 22:44编辑过]

6 回复
#2
sssooosss2022-11-10 08:43
共同学习
#3
fall_bernana2022-11-10 09:51
回复 楼主 编程小猪
你可以看response_1.text 里没有这些内容的。因为你要的内容是通过js动态加载的。你需要通过selenium 来抓取
#4
sssooosss2022-11-13 18:47
共同学习
#5
时光流逝2022-11-14 10:23
回复 楼主 编程小猪
程序代码:

from bs4 import BeautifulSoup
buf = resp.text
soup = BeautifulSoup(buf, 'html.parser')
for src in soup.find_all('li'):
    title = src.get("title")
    if type(title)!="NoneType":
        #做你想做的
#6
编程小猪2022-11-17 12:39
回复 3楼 fall_bernana
确实没有东西,我找到原因了,因为我的index里面有一串字符串,我把需要的字符串通过substring得到就能爬取了,不过价格和评论用的是ajxs所以还得想想办法
#7
编程小猪2022-11-17 12:40
回复 5楼 时光流逝
这个在网上看到过,不过我已经爬出来了,谢谢大佬
1