使用 Scrapy,如何获取 Javascript 变量的值....
这是我的代码...
<script rel="bmc-data">
var match = 'yes';
var country = 'uk';
var tmData = {
"googleExperimentVariation": "1",
"pageTitle": "Child Care",
"page_type": "claimed",
"company_state": "wyostate",
"company_city": "mycity"
};
</script>
Run Code Online (Sandbox Code Playgroud)
我想检查page_type变量的值。如果它的“已声明”处理页面,否则继续......
我试过这个...
pattern = r'page_type = "(\w+)",'
response.xpath('//script[@rel="bmc-data"]').re(pattern)
Run Code Online (Sandbox Code Playgroud)
但是当然这不起作用,因为我认为我的正则表达式是错误的。
我希望通过控制台将一些项目添加到 DynamoDB 中。(请参见下面的屏幕截图)。当我单击“保存”按钮时,什么也没有发生。没有新项目被创建。我还选中了 DynamoDB JSON 复选框,将 JSON 转换为 DynamoDB 兼容的 JSON,然后再次单击“保存”按钮,但没有任何反应。有人可以建议我做错了什么吗?也没有错误消息。
我正在为一个项目使用 BeautifulSoup。这是我的 HTML 结构
<div class="container">
<div class="fruits">
<div class="apple">
<p>John</p>
<p>Sam</p>
<p>Bailey</p>
<p>Jack</p>
<ul>
<li>Sour</li>
<li>Sweet</li>
<li>Salty</li>
</ul>
<span>Fruits are good</span>
</div>
<div class="mango">
<p>Randy</p>
<p>James</p>
</div>
</div>
<div class="apple">
<p>Bill</p>
<p>Sean</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我想在属于“水果”类的div 类“apple”中获取文本
这是我迄今为止尝试过的......
for node in soup.find_all("div", class_="apple")
Run Code Online (Sandbox Code Playgroud)
它的回归...
但我希望它只返回......
请注意,我不知道div class="apple"中元素的确切结构。该类中可以有任何类型的不同 HTML 元素。所以选择器必须足够灵活。
这是完整的代码,我需要在其中添加此 BeautifulSoup 代码...
class MySpider(CrawlSpider):
name = 'dknnews'
start_urls = ['http://www.example.com/uat-area/scrapy/all-news-listing/_recache'] …Run Code Online (Sandbox Code Playgroud) 我有这个 .csv 文件...
\n\n id,first_name,last_name,email,date,opt-in,unique_code\n 1,Jimmy,Reyes,jreyes0@macromedia.com,12/29/2016,FALSE,ER45DH\n 2,Doris,Wood,dwood1@1und1.de,04/22/2016,,MU34T3\n 3,Steven,Miller,smiller2@go.com,07/31/2016,FALSE,G34FGH\n 4,Earl,Parker,eparker3@ucoz.com,01-08-17,FALSE,ASY67J\n 5,Barbara,Cruz,bcruz4@zdnet.com,12/30/2016,FALSE,NHG67P\nRun Code Online (Sandbox Code Playgroud)\n\n如果选择加入值为空,则应打印“0”。csv 中的最后一个值应首先打印,然后以特定格式打印所有名称、值对,如下面的预期输出文件所示。
\n\n我的预期输出
\n\nER45DH<tab>"id"="1","first_name"="Jimmy","last_name"="Reyes","email"="jreyes0@macromedia.com","date"="12/29/2016","opt-in"="FALSE"\nMU34T3<tab>"id"="2","first_name"="Doris","last_name"="Wood","email"="dwood1@1und1.de","date"="04/22/2016,"opt-in"="0"\n.......\nRun Code Online (Sandbox Code Playgroud)\n\n到目前为止我的代码..
\n\nimport csv\n\nwith open(\'newfilename.csv\', \'w\') as f2:\n with open(\'mycsvfile.csv\', mode=\'r\') as infile:\n reader = csv.reader(infile)\n for i,rows in enumerate(reader):\n if i == 0:\n header = rows \n else:\n if rows[5] == \'\':\n rows[5] = 0;\n pat = rows[0]+\'\\t\'+\'\'\'"%s"="%%s",\'\'\'*(len(header)-2)+\'\'\'"%s"="%%s"\xe2\x80\x8c\xe2\x80\x8b\\n\'\'\'\n print pat\n f2.write(pat % tuple(header[1:]) % tuple(rows[1:]))\n f2.close()\nRun Code Online (Sandbox Code Playgroud)\n\n此代码产生此输出
\n\n1 "first_name"="Jimmy","last_name"="Reyes","email"="jreyes0@macromedia.com","date"="12/29/2016","opt-in"="FALSE","unique_code"="ASD34R"\xe2\x80\x8c\xe2\x80\x8b\n2 "first_name"="Doris","last_name"="Wood","email"="dwood1@1und1.de","date"="04/22/2016","opt-in"="0","unique_code"="SDS56N"\nRun Code Online (Sandbox Code Playgroud)\n\n正如您所看到的,缺少“id”列,并且我希望将 unque_code 放在第一位。
\n\n …我有一个类似下面的JSON
[
{
"Event_code": "AB-001",
"Start_time": "11:00 AM",
"End_time": "3:00 PM",
"Session_type": "Tour"
},
{
"Event_code": "AB-002",
"Start_time": "09:30 AM",
"End_time": "1:00 PM",
"Session_type": "Course information session"
},
{
"Event_code": "AB-003",
"Start_time": "9:00 AM",
"End_time": "3:00 PM",
"Session_type": "General information session"
}
]
Run Code Online (Sandbox Code Playgroud)
我想要做的就是在开始时间对数组进行排序...我在这里看到了一个解决方案,但我不知道如何将它调整为我的JSON结构...
有人可以建议......!
我试图从网页上抓取数据.该网页只是2500个URL的项目符号列表.Scrapy获取并转到每个URL并获取一些数据......
这是我的代码
class MySpider(CrawlSpider):
name = 'dknews'
start_urls = ['http://www.example.org/uat-area/scrapy/all-news-listing']
allowed_domains = ['example.org']
def parse(self, response):
hxs = Selector(response)
soup = BeautifulSoup(response.body, 'lxml')
nf = NewsFields()
ptype = soup.find_all(attrs={"name":"dkpagetype"})
ptitle = soup.find_all(attrs={"name":"dkpagetitle"})
pturl = soup.find_all(attrs={"name":"dkpageurl"})
ptdate = soup.find_all(attrs={"name":"dkpagedate"})
ptdesc = soup.find_all(attrs={"name":"dkpagedescription"})
for node in soup.find_all("div", class_="module_content-panel-sidebar-content"):
ptbody = ''.join(node.find_all(text=True))
ptbody = ' '.join(ptbody.split())
nf['pagetype'] = ptype[0]['content'].encode('ascii', 'ignore')
nf['pagetitle'] = ptitle[0]['content'].encode('ascii', 'ignore')
nf['pageurl'] = pturl[0]['content'].encode('ascii', 'ignore')
nf['pagedate'] = ptdate[0]['content'].encode('ascii', 'ignore')
nf['pagedescription'] = ptdesc[0]['content'].encode('ascii', 'ignore')
nf['bodytext'] = ptbody.encode('ascii', 'ignore')
yield nf
for …Run Code Online (Sandbox Code Playgroud)