账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    抓取淘宝信息,print无内容?
    45
    0
    # -*- conding:utf-8 -*-
    
    import requests,re
    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from pyquery import PyQuery as pq
    
    browers = webdriver.Chrome()
    wait = WebDriverWait(browers, 10)
    def search():
        try:
            browers.get('http://www.taobao.com/')
            input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#q')))
            sub = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button')))
            input.send_keys('金融书籍')
            sub.click()
            page_num = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total')))
            list_content()
            return page_num.text
        except TimeoutException:
            return search()
    
    def page_next(page_num):
        try:
            input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > input')))
            sub = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit')))
            input.clear()
            input.send_keys(page_num)
            sub.click()
            wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page_num)))
            list_content()
        except TimeoutException:
            page_next(page_num)
    
    def list_content():
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist > div > div')))
        html = browers.page_source
        doc = pq(html)
        items = doc('#mainsrp-itemlist > div > div').items() #得到所有选择的内容
        for item in items:
            content = {
                'image':item.find('.pic .img').attr('src'), #选择img的src属性。选择class或者标签在前面加.点,属性用attr
                'price':item.find('.price').text(),
                'deal':item.find('deal-cnt').text()[:-3],#切片,从最前面到倒数的三个字符删除
                'title':item.find('.title').text(),
                #'J_ClickStat':item.find('.J_ClickStat').attr('href'),
                #'shopinfo':item.find('.J_ShopInfo').attr('href'),
                'shop':item.find('.shop').text(),
                'location':item.find('.location').text()
            }
            print(content)
    
    def main():
        total = search()
        total = int(re.compile('(\d+)').search(total).group(1))
        for i in range(2,total + 1):
            page_next(i)
    
    
    if __name__ == '__main__':
        main()
    

    能正常运行,翻页,但是为啥没有print出内容呢?list_content()应该是把一些字段信息打印出来呀...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 紫梦风铃 普通会员 1楼

      如果你想要抓取淘宝商品信息,可以使用Python的requests库来发送HTTP请求。以下是一个简单的示例,抓取淘宝商品信息:

      ```python import requests

      商品URL

      url = 'https://www.taobao.com/search/sugoods.html'

      发送GET请求

      response = requests.get(url)

      打印响应内容

      print(response.text) ```

      这段代码会发送一个GET请求到淘宝的搜索结果页面,然后打印出响应内容。

      如果你想要抓取的商品信息是动态加载的,那么你可能需要使用更复杂的解析代码,如Selenium。以下是一个使用Selenium的示例,抓取淘宝商品信息:

      ```python from selenium import webdriver

      创建一个新的Chrome浏览器实例

      driver = webdriver.Chrome()

      打开淘宝搜索结果页面

      driver.get(url)

      打印出页面标题

      print(driver.title)

      等待页面加载完成

      driver.implicitly_wait(10)

      获取页面中的所有商品标题

      product_titles = driver.find_elements_by_tag_name('h3')

      打印出所有商品标题

      for title in product_titles: print(title.text)

      关闭浏览器

      driver.quit() ```

      这段代码会打开淘宝搜索结果页面,等待页面加载完成,然后获取页面中的所有商品标题,并打印出来。注意,这只是一个基本的示例,实际使用时可能需要处理更多的细节,如页面的结构、搜索结果的分页等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部