小编moz*_*fox的帖子

将网页抓取的结果存储到数据库中

我已经编写了一个使用 python 进行网页抓取的代码。该代码使用 selenium 从亚马逊提取 Macbook 的数据。现在我想将这些值存储在 Excel 或 MySql 中。特定产品行中有各种 html/css 类,还有一个包含产品所有参数的父类。准确地说,代码是:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import xlwt 
from xlwt import Workbook 
option = webdriver.ChromeOptions()
option.add_argument("--incognito")
browser = webdriver.Chrome(executable_path='/home/mukesh/Desktop/backup/Programminghub/whatsapp_python_scripts/chromedriver_linux64/chromedriver', chrome_options=option)
# go to website of interest
browser.get("https://www.amazon.in/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=macbook")
# wait up to 10 seconds for page to load
timeout = 10
try:
    WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, "//img[@class='s-access-image cfMarker']")))
except TimeoutException:
    print("Timed out waiting for …
Run Code Online (Sandbox Code Playgroud)

python selenium web-crawler web-scraping selenium-webdriver

5
推荐指数
1
解决办法
4124
查看次数

我对单行 if else 语句有问题

这是发生的神秘问题,我在这里有字典并尝试遍历它并创建一个新的字典:

myDict = {(i,j):(i,j,i+j) if i != j else (i,2*i,3*i,4*i) for i in range(1,7) for j in range(1,7)}

newDict = {}
for i,j in myDict.items():
    for jj in j:
        newDict[jj]=[i] if jj not in newDict.keys() else newDict[jj].append(i)
Run Code Online (Sandbox Code Playgroud)

但它在第三个周期停止并面临此错误:

AttributeError: 'NoneType' 对象没有属性 'append'

但是当将 if else 语句更改为此代码时:

newDict = {}
for i,j in myDict.items():
    for jj in j:
        if jj not in newDict .keys():
            newDict[jj]=[i]
        else:
            newDict[jj].append(i)
Run Code Online (Sandbox Code Playgroud)

这个代码块工作正常,但我不知道第一个代码块有什么问题。

python built-in python-3.x

0
推荐指数
1
解决办法
68
查看次数